首页 > 代码库 > Python学习笔记第十九周

Python学习笔记第十九周

目录:

  一、路由系统URL

    1、Django请求生命周期

    2、创建Django project

    3、配置

    4、编写程序

 

  二、视图

 

  三、模板

 

  四、ORM操作

  

内容:

一、URL

  1、Django请求生命周期

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

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

 

   2、创建Django project

   django-admin  startproject myproject

   cd  myproject

   python  manage.py  startapp  myapp

      

    myproject

     - myproject

       - 配置文件

       - url.py

       - settings.py

     - myapp

       - views.py

       - admin.py

       - models.py  #创建数据库表

 

  3、配置

     模板路径

    静态文件路径

    # CSRF

 

  4、编写程序

    a. url.py

      /index/   ->  func 

    b. views.py

      def func(request):

        #包含所有的请求数据

        return HttpResponse(‘字符串‘)

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

        return redirect(‘URL’)

    c.模板语言

      {%  for i in item%}

        <h1>{{  i }}</h1>

        {% endfor %}

      *************索引*************

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

    d.后端获取前端的方法:

    1、普通方式:get

    2、特殊方式:input的type=checkbox方式(多选模式),需要使用getlist方法

    3、文件获取:input的type=file方式,默认使用get只能取得文件名,需要说明的是,上传文件是上传到request.FILES中,而request.POST.get只是从request.FILES中获取文件名,可以通过request.FILES.get()

    备注:

    在获取文件时,需要在对应的form表单中添加 <form action=‘/login/‘ method=‘POST‘ enctype=‘multipart/form-data‘>  

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

    obj.name # request.FILES.get(‘file_name‘)中包含很多参数,其中name表示获取文件名

    f = open(obj.name, mode=‘wb‘)#准备一个文件,将上传的文件写入

    for item in obj.chunks():#chunks表示文件一点一点上传到内存中,然后在通过内存写入

      f.write(item)

    f.close()

     

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

    url   --->  函数名   FBV

    url   --->  类         CBV

    建议:两者都用

    例子:

    

技术分享
views.py文件

from django.views import View

class Home(View):


    #重新这个方法是为了实现类装饰器的作用,因为dispaths先于get和post执行的
    def dispath(self,request,*args,**kwargs):
        print(before)
        result = super(Home,self).dispath(request,*args,**kwargs)
        print(after)
        return  result  

    def get(self,request):
        print(request.method)
        return render(request,home.html)
        
        
        
    def post(self,request):
        print(request.method)
        return render(request,home.html)
        
        
备注:
查找(知道使用get还是post方法)操作是通过View类中的dispath方法中的getattr来反射的,dispath先于get和post方法执行        

urls.py文件

from app01 import views

urlpatterns = [

    url(r^home/,views.Home.as_view()),

]
View Code

 

    

Python学习笔记第十九周