启动虚拟机:
workon bj18_py3
创建一个项目:
django-admin.py startproject mysite
启动开发用服务器:从外层项目 mysite 目录切换进去,若准备好了就运行命令:
python manage.py runserver
python manage.py runserver 8080
python manage.py runserver 0.0.0.0:8000
你将会看到命令行输出如下内容:
Performing system checks...
0 errors found
May 13, 2015 - 15:50:53
Django version 1.8, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
请在你的 Web 浏览器中访问 http://127.0.0.1:8000/。你会看到一个令人愉悦的,柔和的淡蓝色 “Welcome to Django” 页面。它工作正常!
也可以指定 python manage.py runserver 0.0.0.0:8001 指定地址和端口。
数据库设置:
以mysql数据库为例,编辑 mysite/settings.py。
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql',
'NAME': 'mysite_db', #使用数据库名称,数据库必须提前创建好 'USER': 'root', #链接数据库的用户名 'PASSWORD': 'itcast', #链接数据库的密码 'HOST':'localhost', #配置数据库的ip地址 'PORT':'3306', #配置数据库的端口号 } }
这时,启动开发服务器出错,原因是缺少MySQLdb模块,用pip list 命令查看,
(bj18_py3) python@ubuntu:~/bj18/mysite$ pip list Package Version ------------- ------- Django 1.8.2 pip 19.1.1 pkg-resources 0.0.0 PyMySQL 0.9.3 setuptools 41.0.1 wheel 0.33.1
这时,python3需要用pip install pymysql 安装。安装成功后在__init__.py文件加入:
import pymysql pymysql.install_as_MySQLdb()
然后启动开发用服务器。
创建模型:
项目 ( Projects ) vs. 应用 ( apps )
项目与应用之间有什么不同之处?应用是一个提供功能的 Web 应用 – 例如:一个博客系统、一个公共记录的数据库或者一个简单的投票系统。 项目是针对一个特定的 Web 网站相关的配置和其应用的组合。一个项目可以包含多个应
用。一个应用可以在多个项目中使用。
要创建你的应用,请确认与 manage.py 文件在同一的目录下并输入以下命令:
python manage.py startapp polls
在这简单的投票应用中,我们将创建两个模型: Poll 和 Choice 。 Poll 有:问题和发布日期两个字段。 Choice 有两个字段: 选项 ( choice ) 的文本内容和投票数。每一个 Choice 都与一个 Poll 关联。这些概念都由简单的 Python 类来表现。编辑 polls/models.py 文件后如下所示:
class Question(models.Model):
question_text = models.CharField(max_length=200) #一些 Field 实例是需要参数的。 例如 CharField 需要你指定~django.db.models.CharField.max_length 。
pub_date = models.DateTimeField('date published') #你可以在初始化 Field 实例时使用第一个位置的可选参数来指定人类可读的名字。这在Django的内省部分中被使用到了,而且兼作文档的一部分来增强代码的可读性。若字段未提供该参数,Django 将使用符合机器习惯的名字。在本例中,我们仅定义了一个符合人类习惯的字段名 Poll.pub_date 。对于模型中的其他字段,机器名称就已经足够替代人类名称了。
class Choice(models.Model):
poll = models.ForeignKey(Question) #定义了一个关联。它告诉 Django 每一个 Choice 关联一个 Poll 。
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0) #一个 Field 实例可以有不同的可选参数; 在本例中,我们将 votes 的 default 的值设为 0。
Django 支持常见数据库的所有关联:多对一(many-to-ones ),多对多( many-to-manys ) 和 一对一 ( one-to-ones )。
激活模型 :
有了这些模型代码 Django 就可以做:为该应用创建对应的数据库架构 (CREATE TABLE statements) 。 为 Poll 和Choice 对象创建 Python 访问数据库的 API 。
首先,我们需要告诉我们的项目已经安装了 polls 应用。再次编辑 settings.py 文件,在 INSTALLED_APPS 设置中加入 'polls' 字符。因此结果如下所示:
INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'polls', )
现在 Django 已经知道包含了 polls 应用。让我们运行如下命令:
python manage.py makemigrations #生成迁移文件
python mange.py migrate #执行迁移生成表
进入管理网站:
在sattings.py设置本地化
LANGUAGE_CODE = 'zh-CN' TIME_ZONE = 'Asia/Shanghai'
设置超级管理员账户密码
python manage.py syncdb
python manage.py createsuperuser#创建超级用户
我们需要告诉管理网站 Poll 对象要有一个管理界面。为此,我们在你的 polls 目录下创建一个名为 admin.py 的文件,并添加如下内容:
from django.contrib import admin from polls.models import Question,Choice
class QuestionAdmin(admin.ModelAdmin):
list_display = ["id","question_text","pub_date"]
class ChoiceAdmin(admin.ModelAdmin):
list_display = ["id","choice_text","votes","poll_id"]
admin.site.register(Question,QuestionAdmin)
admin.site.register(Choice,ChoiceAdmin)
修改models.py文件,返回名字:
class Question(models.Model): question_text = models.CharField(max_length=200) #一些 Field 实例是需要参数的。 例如 CharField 需要你指定~django.db.models.CharField.max_length 。 pub_date = models.DateTimeField('date published') #你可以在初始化 Field 实例时使用第一个位置的可选参数来指定人类可读的名字。这在Django的内省部分中被使用到了,而且兼作文档的一部分来增强代码的可读性。若字段未提供该参数,Django 将使用符合机器习惯的名字。在本例中,我们仅定义了一个符合人类习惯的字段名 Poll.pub_date 。对于模型中的其他字段,机器名称就已经足够替代人类名称了。 def __str__(self): return self.question_text class Choice(models.Model): poll = models.ForeignKey(Question) #定义了一个关联。它告诉 Django 每一个 Choice 关联一个 Poll 。 choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0) #一个 Field 实例可以有不同的可选参数; 在本例中,我们将 votes 的 default 的值设为 0。 def __str__(self): return self.choice_text
浙公网安备 33010602011771号