django版本为1.11 <和django2.1相比会在 views.py中的写法有些不同>
django的安装
pip install django
创建django项目
指定目录下,cms输入:
django-admin startproject mysite
项目的目录结构显示如下:
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
运行项目:
在manage.py所在目录,即项目的根目录下:
python manage.py runserver
浏览器输入localhost:8000,即可看到“Congratulations!”页面
修改数据库配置:
在mysite/settings.py中,修改DATABASES项,本例中已mysql为例:
DATABASES = {
'default': {
# Ends with "postgresql_psycopg2", "mysql", "sqlite3" or "oracle".
"ENGINE": "django.db.backends.mysql",
# DB name or path to database file if using sqlite3.
"NAME": "college",
# Not used with sqlite3.
"USER": "root",
# Not used with sqlite3.
"PASSWORD": "root",
# Set to empty string for localhost. Not used with sqlite3.
"HOST": "localhost",
# Set to empty string for default. Not used with sqlite3.
"PORT": "3306",
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
为了适用于Mysql数据库配置,需要修改mysite/__init__.py
import pymysql
pymysql.install_as_MySQLdb()
然后执行数据库迁移命令:python manage.py migrate,
该命令会去查找mysite/settings.py中的INSTALLED_APPS,然后把mysite 这个project中所包含的app内的model都migrate到所设置的数据库中。
创建app
在已有的project下创建一个名为polls的app(app是一个可以复用的东东,可以被不同的project引用):
python manage.py startapp polls
创建完成后,polls目录结构如下:
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
然后要把我们自定义的polls这个app添加到mysite这个project中,具体操作是:修改mysite/settings.py,找到INSTALLED_APPS,添加‘polls.apps.PollsConfig’:
INSTALLED_APPS = [
'polls.apps.PollsConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
创建models
polls/models.py
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Meta:
db_table = "question"
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
class Meta:
db_table = "choice"
然后根据我们创建的model在数据库中生成相应的表:
python manage.py makemigrations polls
python manage.py migrate
创建templates
在polls目录下创建templates目录,templates目录下创建polls目录,polls目录下创建Index.html
编辑index.html
{% if latest_question_list %}
<ul>
{% for question in latest_question_list %}
<li><a href="/polls/{{ question.id }}/">{{ question.question_text }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>No polls are available.</p>
{% endif %}
创建view
polls/views.py
from django.shortcuts import render
from polls.models import Question
def index(request):
latest_question_list = Question.objects.order_by('-pub_date')[:5]
context = {'latest_question_list': latest_question_list}
return render(request, 'polls/index.html', context)
创建urls
urls定义了所有的访问
polls/urls.py
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
]
注册urls
就是将polls application中的urls注册到mysite project的urls中来,如下所示,所有url中包含“polls/”的都会走入polls的urls内。
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^polls/', include('polls.urls')),
url(r'^admin/', admin.site.urls),
]
最后python manage.py runserver启动项目,如果出现一下界面,那么代表访问views.index成功:
使用Django后台系统
因为我们现在的question表中还没有具体的数据,那么要如何在question表中添加数据呢?可以写接口,也可以通过django的后台管理系统实现界面编辑添加数据,而不需要添加任何一行代码,这里我们选择后一种。
首先创建后台管理用户:
python manage.py createsuperuser
安装提示完成用户创建后,访问localhost:8000/admin 即可登陆。
为了在后台管理我们自己的model:question,answer,需要做一下配置:
polls/admin.py
from django.contrib import admin
from .models import Question, Choice
# Register your models here.
admin.site.register(Question)
admin.site.register(Choice)
在这个后台页面可以随意编辑内容,然后数据会插入后台的question或choice表中。
然后再访问 localhost:8000/polls就可以看到question表中的内容了。