zoukankan      html  css  js  c++  java
  • django的路由系统

    路由系统

    创建APP

    a. 使用pycharm创建django的时候, 加上app的名字
    
    b. Python manage.py startapp  app的名字
    

    路由分组

    将业务逻辑写道app中的views中

    from app01 import views
    urlpatterns = [   
    	# url(r'^admin/', admin.site.urls),     
    	url(r'^test/', views.test),
    ]
    

    使用include来进行app分组

    urls.py:  
    
    from django.conf.urls import url, include   
    urlpatterns = [      
        url(r'^classes/', include("classes.urls")),      
        url(r'^staudent/', include("staudent.urls")),      
        url(r'^teachers/', include("teachers.urls")),   
    ]
    

    在其余app中,添加urls.py文件

    from django.conf.urls import url
    from classes import views
    urlpatterns = [   
    url(r'^get_classes/', views.get_classes)
    ]
    

    在这个app的views中,添加业务逻辑函数

    from django.shortcuts import render,HttpResponse
    # Create your views here.
    def get_classes(request):   
    	return HttpResponse('classes list')
    

    路由的分发

    正则表达式

    urlrouters:   
    url(r'^test/(w+)/(w+)/', views.test),   
    url(r'^test1/(?P<id>w+)/(?P<name>w+)/', views.test1),
    
    views.py:   
    def test(request, name, id):      
    	print(id, name)      
    	return HttpResponse('test')   
    def test1(request, name, id):      
    	print(id, name)      
    	return HttpResponse('test')
    	
    	如果没有?P的约束, 传参的时候, 会根据顺序来获取参数对应的值
    	而如果有约束的话, 传参的时候, 会固定的将获取的值传给所对应的的约束
    

    自定义404页面

    urls.py
    url(r'^', views.notfound)
    
    views:
        def notfound(request);
        	return render(request, "404.html")
    

    反向路由解析

    urls.py:
    	url(r'^logindbsjhalbdhaskbhdkjsabhdkbashkdbhsabdhsja/$', views.login, name='xxx'),
    
    login.html:
    	<form action="{% url "xxx" %}" method="post">
    		<input type="text">
    	</form>
    

    FBV (function based views)

    ​ 使用函数来处理业务逻辑

    CBV (class based views)

    ​ 使用类来处理业务逻辑

    urls.py:   
    	url(r'^login/', views.Login.as_view()),
    	
    views.py:
        from django.views import View
        class Login(View):
        	def get(self, request):
        		return render(request, "login.html")
        	def post(self, request):
        		pass
        当请求过来的时候, 会优先判断你的请求方法是GET还是POST, 如果是GET请求的话, 走GET函数, 反之, 走POSt函数
    
    Http的请求方法:   
    'get',:获取信息的   
    'post':提交数据用post方式   
    'put', :更新数据    
    'patch', :部分更新      
    'delete':删除
    
    form表单的方式, 只支持GET/POST
    ajax的方式, 全部支持   
    type: "POST" 、get、delete
    
  • 相关阅读:
    codevs2574 波兰表达式
    绿书模拟day10 单词前缀
    codevs2171 棋盘覆盖
    noip2008 双栈排序
    图论总结复习
    noip2010 关押罪犯
    flask使用geventwebsocket完成小型聊天系统
    MongoDB
    flask基础内容总览
    flask蓝图,cbv,python中的redis操作
  • 原文地址:https://www.cnblogs.com/einsam/p/11416067.html
Copyright © 2011-2022 走看看