Django文档
https://docs.djangoproject.com/zh-hans/2.0/安装Django
pip install django==2.0
# 下载比较慢的同学可以换个源下载
pip install django==2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple解决方法:
python -m pip install django创建项目
django-admin startproject mysite
# 创建虚拟环境
cd mysite
python -m venv venv目录结构
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.pymanage.py管理
django项目的命令行工具,manage.py就是django-admin, 只是他们有以下区别django-admin会被加入到环境变量当中, 所以我们可以在任意目录下调用.manage.py只能在该项目下使用.
mysite(项目名)实际业务逻辑编写, 项目配置, 路由管理的地方.
__init__.py让
Python将当前目录识别为一个包.settings.py项目的配置文件.
wsgi.pyweb server gateway interfaceweb服务网关接口.wsgi只是一个协议, 它确立了两个规范:- 我们可以在服务器下开启多个web服务应用, 确定客户端请求如何到达服务应用的规范.
- 服务应用如何把处理的结果返回.
启动项目
创建一个应用
创建的应用才是真正处理请求和编写业务逻辑的地方.
python manage.py startapp polls启动项目
# 5000为指定的端口, 不指定端口默认为8000 python manage.py runserver 5000
MTV模型

Model
django提供了一个抽象的模型层, 目的是为了构建和操纵当前web应用的数据.简单地说, model层就是用来和数据库进行交互的.
django最出名的就是它的orm
orm
object relation mapping对象关系映射orm自动地根据对象在数据库中进行操作. orm使得我们不用去操心数据表的建立和修改, 数据的CRUD, 只关心逻辑层的处理
Template
View将数据传递给模板层进行渲染, 之后将渲染好的页面返回到客户端.
模板层提供了一个对设计者友好的语法用于渲染向用户呈现的信息.
类似PPT模板
View
视图层, 负责处理用户的请求并返回响应.
创建视图
视图就是处理客户端请求的地方
views.pydef index(request): """ request 就是作为参数传递进来的请求对象 :param request: :return: HttpResponse 处理完请求的返回对象 """ return HttpResponse("Hello world. You're at the polls index.")解决不同请求调用不同的处理方法, 需要通过路由
创建应用的路径管理
from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), ]将应用的路径管理添加到全局配置当中
from django.urls import path, include urlpatterns = [ path('polls/', include("polls.urls")), ]
创建模型
数据库配置
settings.pyDATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'polls', 'USER': 'root', 'PASSWORD': 'qwe369', 'HOST': '127.0.0.1', 'PORT': '3306' } }修改连接数据库的客户端
mysite\__init__.pyimport pymysql pymysql.install_as_MySQLdb()
初始化数据库
- 新建数据库
polls 完成第一次迁移, 生成初始的管理表
python manage.py migrate
- 新建数据库
创建模型
from django.db import models # Create your models here. class Question(models.Model): question_text = models.CharField(max_length=200) pub_data = models.DateTimeField('date published') class Choice(models.Model): question = models.ForeignKey(Question, on_delete=models.CASCADE) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0)激活模型
激活APP
settings.pyINSTALLED_APPS = [ 'polls.apps.PollsConfig', 'django.contrib.admin', 'django.contrib.auth', ... ]同步本地模型修改(类似git commit)
python manage.py makemigrations 应用名- 会在当前应用
migrations目录下生成响应的记录文件
- 会在当前应用
正式进行数据库同步
python manage.py migrate
管理后台
创建管理员
python manage.py createsuperuser向管理页面加入投票应用
from django.contrib import admin # Register your models here. from .models import Question admin.site.register(Question)
视图层返回类型
- 简单文本
文件
- html
- css
- js
- 视频文件, 音频文件
- JSON数据格式
路由配置
URL匹配
path('<int:question_id>/', views.detail, name='detail'),- int表示类型
- question_id表示传递的参数名
URL配置
ROOT_URLCONF
设置主URL配置文件.
模板
def index(request):
"""
request 就是作为参数传递进来的请求对象
:param request:
:return: HttpResponse 处理完请求的返回对象
"""
latest_question_list = Question.objects.order_by('-pub_date')[:5]
context = {
'latest_question_list': latest_question_list,
}
return render(request, 'polls/index.html', context)重定向
当需要对用户不同的操作做不同结果的渲染时, 需要用到重定向. 可以简单理解为当前网址自动帮你跳转到另外一个网址.
return HttpResponseRedirect(reverse('polls:results', args=(question.id,)))
通用视图
通用视图将常见的模式抽象化,可以使你在编写应用时甚至不需要编写Python代码。
通用视图也是未来我们学习restful api的雏形.
课后作业
- 完成polls投票应用
- 了解和使用通用视图
预习orm的shell操作.
https://docs.djangoproject.com/zh-hans/2.0/intro/tutorial02/
此处评论已关闭