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.py- manage.py- 管理 - django项目的命令行工具,- manage.py就是- django-admin, 只是他们有以下区别- django-admin会被加入到环境变量当中, 所以我们可以在任意目录下调用.
- manage.py只能在该项目下使用.
 
- mysite(项目名)- 实际业务逻辑编写, 项目配置, 路由管理的地方. - __init__.py- 让 - Python将当前目录识别为一个包.
- settings.py- 项目的配置文件. 
- wsgi.py- web 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.py- def 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.py- DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'polls', 'USER': 'root', 'PASSWORD': 'qwe369', 'HOST': '127.0.0.1', 'PORT': '3306' } }- 修改连接数据库的客户端 - mysite\__init__.py- import 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.py- INSTALLED_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/
 
                             
                            
此处评论已关闭