Django 开发基础流程

Django

  1. Django有关的所有命令(下载,安装)

     下载 pip3 install Django==1.11.9
     创建 django-admin startproject mysite
     启动python manage.py runserver 127.0.0.1:8000
     创建python manage.py startapp 应用名
    
  2. Django的settings中,用到的配置有哪些,他们的作用

    BASE_DIR         路径     base_dir
    INSTALLED_APPS   app     installed_apps
    MIDDLEWARE       中间件   middleware
    TEMPLATES        模板     templates
    DATABASES        数据库   databases
    STATIC_URL       指定静态url static_url
    
  3. Django使用mysql的流程

    1.cmd创建数据库
      mysql -uroot -p
      create database 库名
    2.在settings中进行配置
      DATABASES={
          'default':{
             'ENGINE': 'django.db.backends.mysql',
             'NAME': 'bookmanager',
             'HOST': '127.0.0.1',
             'PORT': 3306,
             'USER': 'root',
             'PASSWORD': '',
          }
      }
    3.在项目init文件下
      import pymysql
      pymysql.install_as_MySqldb()
    4.在app下的models中写类(models.Model)
    5.数据库迁移
      python manage.py makemigrations  #记录变更
      python manage.py migrate         #同步数据库
    
  4. 分别定义一个FBV和CBV,以及他们的路由

    FBV
    url下
    from app01 import views
    url(r'^login2/', views.xx),
    def xx(request):
    	retrun
    	
    
    CBV
    url下
    from app01 import views
    url(r'^login2/', views.LoginView.as_view()),
    from django.views import View
    class loginview(View)
    
    
  5. requests对象的方法和属性

    属性:
     request.body 原始数据post
     request.GET  GET请求提交的数据
     request.POST POST请求提交的数据
     request.META 请求头相关信息
     Request.method 请求的方法类型
    方法:
     request.get_host()   ----->主机地址
     request.get_full_path()      ----->URL   路径   带参数
    
  6. 写出你知道的模板语法

    1.变量 
    {{ 变量名 }}
    2.    .的用法
    {{ name_list.0 }}                   #列表取值
    {{ name_dict.name1 }}         #字典取值
    {{ p1.name }}                        #对象的属性
    {{ p1.sing }}                          # 对象的方法
    3. 过滤器
    {{ 变量名|filter:参数 }}
    4.tags
    {% for user in user_list %}
    {{ user.name }}
    {% endfor %}
    
    {% if  条件 %}
    操作
    
  7. 写出母版和继承的方法

    1. 创建一个 HTML 文件当做母版 'base.html' ,母版中将多个页面的重复代码提取出来
    2. 在母版中定义多个block ,来区分不同页面的不同内容
    3.在子页面中继承母版   {% extends 'base.html' %}
    4.在block 中写自己页面独特的内容,用来替换模板中block中的内容
    {% block content %}
    	母版页面
    {% endblock %}
    
    
    {% extends "base.html" %}
    {% block title %}
    	xxx
    {% endblock %}
    
  8. 写出一个自定义filter的步骤

    自定义过滤器
    
    1. app应用文件夹中创建一个templatetags文件件,必须是这个名字
    2. templatetags文件夹中创建一个 xx.py文件,文件名字随便起
    
    3. 创建自定义过滤器
        from django import template
        register = template.Library()  #register固定的名字,注册器
        @register.filter
        def oo(v1):  #不带参数的过滤器
        	s = v1 + 'xxoo'
        	retrun s
       {% load xx %}
       {{ values|oo }}
       {{ values|oo:‘参数’}}
    
  9. .如何在URLconf中给url命名?在视图和模版中如何使用url反向解析?请写出所有情况

    urls.py:
    url(r'^author_list/$',views.author_list,name = 'author_list'),
    url(r'^home/([0-9]{4})/([0-9]{2})/',views.home,name = 'home'),
    url(r'^home/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/',views.home,name = 'home'),
    
    视图中反向解析:
    from django.urls import reverse
    reverse("author_list")     -----> '/author_list/'
    无名分组:
    reverse('home',args=('1999','06'))         ---->'/home/1999/06/'
    有名分组:
    reverse('home',kwargs = {'year':'1998','month':'06'})   ---->'/home/1998/06/'
    
    模板中反向解析:
    {% url 'author_list' %}     ---->'/author_list/'
    无名分组:
    {% url 'home' '2000' '09' %}
    有名分组:
    {% url 'home' '2000' '09' %}
    {% url 'home' month = '09' year = '1898' %}
    
  10. cookie和session是什么?为什么要使用它们?

1.cookie
定义: cookie是服务器让浏览器保存在浏览器本地的键值对
原因: http 是无状态,每次请求之间没有任何关系,无法保存状态. 使用cookie 来保存
一些状态
2.session
定义: session 是保存在服务器上的键值对,依赖于cookie
原因:
cookie 在浏览器端  不太安全
cookie 长度受限   session长度不受限
  1. Django中操作cookie和session的方法有哪些

    1.cookie
    1.设置 cookie
    rep = redirect("/index/")
    rep.set_cookie(key,value,max_age = 1000)
    rep.set_signed_cookie(key,value,max_age = 1000, salt = '')
    2.获取 cookie
    request.COOKIES['key']
    request.COOKIES.get('key')                --->推荐的取法
    request.get_signed_cookie('key',salt ='')
    3.删除 cookie
    rep.delete_cookie('key')
    2.session
    1.设置session
    request.session['key'] = value
    request.session.setdefault(key,value)            ---->存在就不设置
    2.获取session
    request.session['key']
    request.session.get(key,'')
    3.删除 session
    request.session.pop(key)                ----->删除某一个键值对
    del request.session['key']
    
    request.session.delete()     -->删除所有的session 键值对
    request.session.flush()       -->删除所有的session 键值对,删除了 cookie
    4.设置超时时间
    request.session.set expiry()
    5.清除当前过期的 session
    request.session.clear_expired()
    
  2. Django的中间件是什么?写出process_request和process_response以及process_view三个方法的执行时间,执行顺序和不同的返回值不同的流程

    1.process_request(self.request)
    执行时间 :请求来 先执行,在视图之前
    执行顺序: 按照注册顺序执行
    返回值:
    返回值是None  正常往后走
    返回值是 HttpResponse 对象   后面的不在走, 直接执行当前中间的
    process_response方法
    2.process_response(self,request,response)
    执行时间: 视图函数之后
    执行顺序:安装注册顺序倒序执行
    返回值: HttpResponse对象
    3.process_view(self,request,view_func,view_args,view_kwargs)
    执行时间: 在视图之前 ,process_request之后
    执行顺序: 按照注册顺序 顺序执行
    返回值:
    None    正常往后走
    HttpResponse 对象   后面的中间件 process_view方法、视图不执行
    走所有中间的 process_response方法
    
  3. 请写出jQuery发送ajax请求,能通过Django的csrf校验的两种方法

给data中加csrfmiddlewaretaken
data:{'csrfmiddlewaretoken':$('[name="csrfmiddlewaretoken"]').val()
date:{'csrfmiddlewaretoken':'{{ csrf_token }}'}

加请求头 x-csrftoken
headers:{
	'x-csrftoken':$('[name="csrfmiddlewaretoken"]').val(),
}

posted @ 2023-09-19 23:55  染指未来  阅读(23)  评论(0编辑  收藏  举报