서버 정보 - 설치 구성django

6159 단어 django
django는python 언어를 기반으로 한 서버 프레임워크로 웹 응용 프로그램을 쉽게 개발할 수 있도록 도와줍니다. 다음은 간단한 설치 사용 방법을 기록합니다.
sudo pip install Django==1.5.1
새로운 웹 서비스 만들기 (mysite, 루트 경로 설정, 데이터베이스 설정 등)
django-admin.py startproject mysite
새로운 웹 응용 프로그램 만들기 (books, 구체적인 코드 구현)
manage.py start app books
 
MVC 프레임워크와django는 모델,view 등 모듈을 제공하여 우리가 사용할 수 있도록 한다(그러나django의 모델은 데이터베이스 정의와 유사하고view는 MVC의 controller와template가 MVC의view와 유사하다) 편집 코드는 다음과 같다.
books/models.py
from django.db import models

# Create your models here.
class Publisher(models.Model):
    name = models.CharField(max_length=30)
    address = models.CharField(max_length=50)
    city = models.CharField(max_length=60)
    state_province = models.CharField(max_length=30)
    country = models.CharField(max_length=50)
    website = models.URLField()

    def __unicode__(self):
        return self.name

#class Author(models.Model):
#    first_name = models.CharField(max_length=30)
#    last_name = models.CharField(max_length=40)
#    email = models.EmailField()
#
#    def __unicode__(self):
#        return u'%s %s' % (self.first_name, self.last_name)

#class Book(models.Model):
#    title = models.CharField(max_length=100)
#    authors = models.ManyToManyField(Author)
#    publisher = models.ForeignKey(Publisher)
#    publication_date = models.DateField()
#
#    def __unicode__(self):
#        return self.title

 books/views.py
# Create your views here.
from django.shortcuts import render_to_response
from books.models import Publisher

def list_publishers(request):
        publishers = Publisher.objects.all()
        return render_to_response('list_publishers.html', {'publishers': publishers})

 templates/list_publishers.html
<table>
        {% for p in publishers %}
        <tr>
        <td>Id #{{ p.id }}</td>
        <td>Name #{{ p.name }}</td>
        </tr>
        {% endfor %}
</table>

사용자 정의 설정 웹, 데이터베이스 연결 설정 등
mysite/settings.py
INSTALLED_APPS = (
    'books',
)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': '/home/ciaos/django.sqlite3',                      # Or path to database file if using sqlite3.
        # The following settings are not used with sqlite3:
        'USER': '',
        'PASSWORD': '',
        'HOST': '',                      # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
        'PORT': '',                      # Set to empty string for default.
    }
}

TEMPLATE_DIRS = (
    '/home/ciaos/mysite/templates',
)

mysite/urls.py(python의 강력한 정규 표현식 설정 루트를 이용)
urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'mysite.views.home', name='home'),
    # url(r'^mysite/', include('mysite.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    url(r'^publishers/',list_publishers)
)

python manager.py syncdb 데이터베이스에 동기화 모델
python 관리자를 통해pyshell 단순 조작 조회 데이터베이스
데이터베이스를 다음과 같이 실행합니다. (백그라운드에서 실행하려면 nohup을 사용할 수 있습니다.)
python manage.py runserver
ab로 테스트
ciaos@linux-53dr:~/mysite> sudo /usr/sbin/ab2 -c 10 -n 10000 http://127.0.0.1:8000/publishers/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests


Server Software:        WSGIServer/0.1
Server Hostname:        127.0.0.1
Server Port:            8000

Document Path:          /publishers/
Document Length:        69 bytes

Concurrency Level:      10
Time taken for tests:   49.311 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      2020000 bytes
HTML transferred:       690000 bytes
Requests per second:    202.80 [#/sec] (mean)
Time per request:       49.311 [ms] (mean)
Time per request:       4.931 [ms] (mean, across all concurrent requests)
Transfer rate:          40.00 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    2  38.6      0    1001
Processing:    22   47  82.8     36    2562
Waiting:        6   41  82.7     31    2553
Total:         22   49  91.3     36    2562

Percentage of the requests served within a certain time (ms)
  50%     36
  66%     39
  75%     41
  80%     42
  90%     52
  95%     63
  98%    100
  99%    428
 100%   2562 (longest request)

병발 데이터 등은 참고할 가치가 없다. 왜냐하면 내 노트북의 가상 기기에서 테스트한 것이기 때문에 주로 tornado 서버와 비교한다.django로 간편한 웹 응용을 실현하는 것은 여전히 매우 편리하다.

좋은 웹페이지 즐겨찾기