@breakerthb
        
        2016-06-06T07:31:30.000000Z
        字数 5307
        阅读 1707
    Django Apache Python
$ sudo apt-get install apache2  
$ sudo apt-get install python-mysqldb  
推荐使用pip安装
创建一个名为“mysite”的网站目录
$ django-admin.py startproject mysite  
运行后,生成下面目录格式:

APP名为“polls”
$ cd mysite
	$ python manage.py startapp polls  
修改mysite/mysite/setting.py中的数据库配置
DATABASES = {  
    'default': {  
        'ENGINE': 'django.db.backends.mysql', #mysql  
        'NAME': 'djangoDB', #data base  
        'USER': 'root',  
        'PASSWORD': 'root',  
        'HOST': '127.0.0.1',  
        'PORT': '',  
    }  
}  
修改mysite/mysite/setting.py中的install APP配置
INSTALLED_APPS = (  
    'django.contrib.admin',  
    'django.contrib.auth',  
    'django.contrib.contenttypes',  
    'django.contrib.sessions',  
    'django.contrib.messages',  
    'django.contrib.staticfiles',  
    'polls', #添加的APP,其他默认
)  
进入mysql客户端,创建一个新数据库djangoDB
$ mysql -u root -p
> create database djangoDB;
> quit
创建数据表
$ python manage.py syncdb  
在Django 1.9及未来的版本中使用migrate代替syscdb.
$ python manage.py migrate

过程中会需要录入密码
ubuntu :    159357
进入mysql客户端:
mysql> show tables;  
+------------------------+  
| Tables_in_djangoDB     |  
+------------------------+  
| auth_group             |  
| auth_group_permissions |  
| auth_permission        |  
| auth_user              |  
| django_admin_log       |  
| django_content_type    |  
| django_session         |  
| polls_choice           |  
| polls_question         |  
+------------------------+  
编辑polls/model.py
from django.db import models  
from django.utils import timezone  
# Create your models here.  
class Question(models.Model):  
        question_text=models.CharField(max_length=200)  
        pub_date=models.DateTimeField('date published')  
        def __str__(self):  
                return self.question_text  
        def was_published_recently(self):  
                return self.pub_date >= timezone.now() - datetime.timedelta(days=1)  
class Choice(models.Model):  
        question=models.ForeignKey(Question)  
        choice_text=models.CharField(max_length=200)  
        votes=models.IntegerField(default=0)  
        def __str__(self):  
                return self.choice_text  
编辑polls/admin.py,注册APP
from django.contrib import admin  
from polls.models import Choice, Question  
admin.site.register(Question)  
admin.site.register(Choice)  
# Register your models here.  
创建对应的数据表:
mysql>
create table polls_choice
(
         id int(11) unsigned not null auto_increment primary key,
         question_id int(11) not null,
    choice_text varchar(200) not null,
    votes int(11) not null
);
mysql>
create table polls_question
(
         id int(11) unsigned not null auto_increment primary key,
         question_text varchar(200) not null,
    pub_date datetime not null
);
model对应的mysql数据库结构如下
mysql> desc polls_choice;  
+-------------+--------------+------+-----+---------+----------------+  
| Field       | Type         | Null | Key | Default | Extra          |  
+-------------+--------------+------+-----+---------+----------------+  
| id          | int(11)      | NO   | PRI | NULL    | auto_increment |  
| question_id | int(11)      | NO   | MUL | NULL    |                |  
| choice_text | varchar(200) | NO   |     | NULL    |                |  
| votes       | int(11)      | NO   |     | NULL    |                |  
+-------------+--------------+------+-----+---------+----------------+  
4 rows in set (0.00 sec)  
mysql> desc polls_question;  
+---------------+--------------+------+-----+---------+----------------+  
| Field         | Type         | Null | Key | Default | Extra          |  
+---------------+--------------+------+-----+---------+----------------+  
| id            | int(11)      | NO   | PRI | NULL    | auto_increment |  
| question_text | varchar(200) | NO   |     | NULL    |                |  
| pub_date      | datetime     | NO   |     | NULL    |                |  
+---------------+--------------+------+-----+---------+----------------+  
3 rows in set (0.00 sec)  
超级用户增加
$ python manage.py createsuperuser  
root : root
运行
    $ python manage.py runserver 0.0.0.0:8080  
此时浏览器打开: http://127.0.0.1:8080/admin
可以看到下面页面:

在这里通过刚才创建的超级用户登录,进行站点管理。
在mysite/polls/templates/polls目录下添加如下两个文件:
detail.html
index.html
{%if latest_question_list %} 
    
No polls are available.
修改mysites/polls/views.py
from django.shortcuts import render  
from django.http import HttpResponse,Http404  
from polls.models import Question  
from django.template import RequestContext,loader  
def index(request):  
    latest_question_list = Question.objects.order_by('-pub_date')[:5]  
    template = loader.get_template('polls/index.html')  
    context = RequestContext(request, {  
        'latest_question_list': latest_question_list,  
    })  
    return HttpResponse(template.render(context))  
def detail(request, question_id):  
    try:  
        question = Question.objects.get(pk=question_id)  
    except Question.DoesNotExist:  
        raise Http404  
    return render(request, 'polls/detail.html', {'question': question})   
def results(request, question_id):  
    response = "You're looking at the results of question %s."  
    return HttpResponse(response % question_id)  
def vote(request, question_id):  
    return HttpResponse("You're voting on question %s." % question_id)    
mysites/polls/urls.py
from django.conf.urls import patterns, url
from polls import views
urlpatterns = patterns('', 
    # ex: /polls/ 
    url(r'^', views.index, name='index'),  
        # ex: /polls/5/  
        url(r'^(?P<question_id>\d+)/', views.detail, name='detail'), 
    # ex: /polls/5/results/ 
    url(r'^(?P\d+)/results/', views.results, name='results'),  
        # ex: /polls/5/vote/  
        url(r'^(?P<question_id>\d+)/vote/', views.vote, name='vote'), 
)  
~/mysites/mysites/urls.py
from django.conf.urls import  patterns, include, url 
from django.contrib import admin
urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^polls/', include('polls.urls')), 
]
给数据库中加入一条记录:
myslq> insert into polls_question values('ABC', localtime());
打开页面即可进行测试
$ python manage.py runserver 0.0.0.0:8080
打开浏览器: http://127.0.0.1:8080/polls
[from] 
http://blog.csdn.net/sicexpn/article/details/39475983