Django 라우팅 및 함수 뷰

6996 단어
라우팅 시스템
django에서uri와 논리 함수의 대응 관계를 우리는 루트 시스템이라고 부른다
위정태
위정태는 정적 파일에 대한 것이다. 예를 들어https://www.cnblogs.com/hesujian/p/11165818.html
우리는 위정태라고 부른다. 왜냐하면 그는 사실 html정태 페이지가 아니라 html정태 페이지로 위장했을 뿐이다
거짓 정태의 장점:
1. 미관(전통적인 물음표 결합은 난잡해 보인다)
2. seo(검색엔진 최적화 기술), 검색엔진은 정적 페이지를 수록하는 것을 좋아하기 때문에 모두 위정적으로 수록할 기회를 늘린다.
가상 및 라우팅 배포 실현
기왕 우리가 위정적인 URL으로 서버에 접근한 이상 서버는 어떻게 필요한 값을 얻을 수 있습니까
예를 들어 우리는 다음과 같다.http://127.0.0.1:8000/up_student/?id=12&name=hua
위장:http://127.0.0.1:8000/up_student/12/hua/
백그라운드에서 데이터를 수신하려면 루트 배달 기술이 필요하다
루트 분배 및 백엔드에서uri와 일치할 때 정규 표현식의 그룹을 통해 필요한 값을 그룹으로 나누어 처리하는 함수에 전송합니다
코드:
# 1、        ,     
def up_student(request,id,name):
    print(id,name)

urlpatterns = [
    url(r'^up_student/(\w+)/(\w+)', up_student),
]
# 2、          ,         

def up_student(request,name,id):
    print(id,name)

urlpatterns = [
    url(r'^up_student/(?P\w+)/(?P\w+)', up_student)
]

루트 정규
1,$부적, 어떤 결말
url(r'^test/',test),
#        /          
url(r'^test/$',test)
#       /     

2, 일반
url(r'^',test)

모든 URL이 일치하며 URL이 일치하지 않을 때 되돌아오는 페이지로 사용할 수 있습니다 (404)
그래서 우리 어댑터는 반드시 마지막에 두어야 한다. 그렇지 않으면 그가 먼저 어댑터를 일치시켜서 원래의 URL에 접근할 수 없다
역방향 경로
역방향 루트는 주로form표를 대상으로 하는데 우리의uri가 변화할 때 모든 링크도 상응하는 변화가 발생해야 한다
모든 역방향 루트는 form 폼의 액션을 ui의 변화에 따라 변화시킬 수 있습니다
백그라운드 url:name 속성 설정
url(r'^sdsdsdsad/',test,name="xxx")

전단form 폼: action이 뒤의name 변화에 따라 변경됨
"{% url "login" %}" method="post">

django创建app

我们会把不同类型的逻辑函数和uri放到不同的文件里,这个文件就成为app

创建有两种方式

  1、pycharm创建项目时创建,只能创建一个

  2、命令行创建,进入到项目的路径下输入

    python manage.py startapp 自定义名称

创建完的app文件中有如下就和文件

  admin.py: 写和django-admin相关的配置

  apps: 对app的配置

  models: 数据表模型

  views: 视图函数

  tests: 测试

路由分组

#     include  
from django.conf.urls import include
#  urls.py
    url(r'^app01/', include('app01.urls'))

#  app urls.py
    #       
    from app01 import views
    url('^test',views.test)

함수 보기
함수 보기는 주로 논리 함수를 쓰는데, 함수 보기는 주로 두 가지로 나뉜다
1. FBV function based view 쓰기 함수 처리 논리
2, CBV class based view 클래스 처리 논리
CBV에서
url 변경 필요
url(r'^login/', views.Login.as_view()),

논리를 처리하는 클래스도View라는 클래스를 계승해야 한다
from django.views import View
class Login(View):
    def dispatch(self, request, *args, **kwargs):
        super(Login, self).dispatch(request, *args, **kwargs)
        #      

    def get(self):
        pass

    def post(self):
        pass

#    get     get  ,post     post  
#      dispatch  ,                  
#            ,        ,    ip  

제출 방식
"""
         
get    :    
post   :    
delete :    
put    :    
patch  :      
"""

 
전재 대상:https://www.cnblogs.com/hesujian/p/11191605.html

좋은 웹페이지 즐겨찾기