Django基础进阶

Posted xiekejian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django基础进阶相关的知识,希望对你有一定的参考价值。

内容回顾:

1、Django请求生命周期

                          路由(URL)           视图 (VIEW)                        数据库(MODEL)

  用户请求                                                                                     模板文件(TEMPLATES)

                                                                                                    静态文件(STATIC)

                          返回字符串给客户端

  --- URL对应关系(匹配)  --- 视图函数--->返回用户字符串

  --- URL对应关系(匹配)  --- 视图函数--->打开一个html文件,读取内容

 

 2、创建django project

      django-admin startproect mysite

      cd mysite

      python manage.py startapp cmdb

      ...

 

      mysite

           mysite

                 --配置文件

                --url.py

                --settings.py

           cmdb

              --views.py

              --admin.py

              --models.py #创建数据库表

3、配置

     模板路径

     静态文件路径

     #CSRF

4、编写程序

     a. url.py

         /index/  -> func

    b.view.py

       def func(request):

            #包含所有的请求数据

            ....

            return HttpResponse(‘字符串‘)

            return render(request,‘index.html‘,{‘‘})

            return redirect(‘URL‘)

    c、模板语言

         {% for item in  %}

             <h1>{{item}}</h1>

          {% endfor %}

 

    ****************索引用点来取数****************

    <h2>{{item.0}}</h2>

 

一、路由系统(URL)

     1、两种提交方式:

          GET:获取数据

          POST:提交数据

   插入知识点:

       当表单要上传文件时,则须要<form>标签中添加 enctype="multipart/form-data" 语句

       这时,djaingo会认为提交的数据将按文件处理。

   

 

二、视图

     request.GET

     request.POST

     request.FILES

 

    #checkbox等多选的内容

      request.POST.getlist()

  

    #上传文件

   obj = request.FILES.get(‘filename‘)

   obj.name

   f = open(obj.name,mode=‘wb‘)

   for item in obj.chunks():

       f.write(item)

   f.close()

   注:上传文件,须对表单(form)声明:enctype="multipart/form-data"

 

表单处理

HTML文件:

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
   <form action="/login/" method="post" enctype="multipart/form-data">
       <p>
           <input type="text" name="user" placeholder="用户名">
       </p>
       <p>
           <input type="password" name="pwd" placeholder="密码">
       </p>
       <p>
           男:<input type="radio" name="gender" placeholder="性别" value="1">
           女:<input type="radio" name="gender" placeholder="性别" value="0">
       </p>
       <p>
           男:<input type="checkbox" name="favour" placeholder="爱好" value="1">
           女:<input type="checkbox" name="favour" placeholder="爱好" value="0">
       </p>
       <p>
            <select name="city">
                <option value="sh">上海</option>
                <option value="bj">北京</option>
                <option value="tj">天津</option>
            </select>
       </p>
       <p>
            <select name="city" multiple>
                <option value="sh">上海</option>
                <option value="bj">北京</option>
                <option value="tj">天津</option>
            </select>
       </p>
       <p>
            <input type="file" name="filename" >
       </p>
        <p>
           <input type="submit" value="提交">
       </p>
   </form>
</body>
</html>

 

VIEWS文件

from django.shortcuts import render,redirect
from django.shortcuts import HttpResponse
import os

# Create your views here.

def index(request):
    return HttpResponse(Index)

def login(request):
    if request.method=="GET":
        return render(request,login.html)
    elif request.method=="POST":
        u=request.POST.get(user)
        p=request.POST.get(pwd)
        g=request.POST.get(gender)
        print(g)
        f= request.POST.getlist("favour")
        print(f)
        file=request.POST.get(filename)
        #其实已上传到了request.FILES
        print(file)
        obj=request.FILES.get("filename")
        print(obj,type(obj),obj.name)
        file_path=os.path.join(upload,obj.name)
        f =open(file_path,mode=wb)
        for i in obj.chunks():
            f.write(i)
        f.close()

        if u==xkj and p=="123":
            return redirect(/index/)
        else:
            return render(request, login.html)
    else:
       return redirect(/index/)

4、FBV (function base view)  &   CBV (function class view)

   url.py

      index --->函数名

  view.py

      def 函数(request):

          ....

  /index/--> 函数名

 /index/-->类名

 

 

三、模板

 

 

四、ORM操作

以上是关于Django基础进阶的主要内容,如果未能解决你的问题,请参考以下文章

django进阶

Django - - 基础 - - Django ORM常用查询语法及进阶

django 基础进阶ORM COOKIE

Python进阶:Day1什么django框架,怎么使用,用在哪里?

Python进阶:Day1什么django框架,怎么使用,用在哪里?

Python进阶:Day1什么django框架,怎么使用,用在哪里?