• Django---路由如何配置


    具体配置在项目配置文件夹下的 urls.py:

    from index import views
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('index/', views.index),
    ]

    index的意思就是:访问 index 路由到 index 应用下的 index 方法:

    上面给出的是更像是 面向函数式编程,还可以路由到类:

    同样是在 index应用下的view中,新建类:

    这里的访问:访问change则会路由到 viws下面的 Index类。

    这里可以对 get 和 post 分开处理。

    上面就是两种:面向函数式编程,和面向对象式编程。两者可以结合起来用。

    正则路由

    简答示例:

    urlpatterns = [
        url(r'admin/', admin.site.urls),
        url(r'index/', views.index),
        url(r'list/', views.list),
        url(r'lists/', views.lists),
        url(r'change/',views.Index.as_view()),# 路由到类
        url(r'details-(d+).html',views.details) # 正则路由
    ]

    控制器:

    def lists(request):
        USER_INFO = { '1':'root1','2':'root2','3':'root3','4':'root4'}
        return render(request,'lists.html',{'user_info':USER_INFO})
    
    def details(request,nid):
        if request.method == "GET":
            print(nid)
            return HttpResponse('15545')

    模板:

    <!-- 拿到 key 和 value -->
    {% for k,v in user_info.items %}
        <p><a href="/details-{{ k }}.html">{{ k }}----{{ v }}</a></p>
    {% endfor %}

     这样路由,形参的nid必须是第一个,如果传递多个参数:正则分组:

    urlpatterns = [
        url(r'admin/', admin.site.urls),
        url(r'index/', views.index),
        url(r'list/', views.list),
        url(r'lists/', views.lists),
        url(r'change/',views.Index.as_view()),# 路由到类
        #url(r'details-(d+).html',views.details),
        url(r'details-(?P<nid>d+)-(?P<uid>d+).html',views.details),
    ]

    模板:

    <!-- 拿到 key 和 value -->
    {% for k,v in user_info.items %}
        <p><a href="/details-{{ k }}-55.html">{{ k }}----{{ v }}</a></p>
    {% endfor %}

    这样:无论形参数的顺序变化,都可以接受

    def details(request,uid,nid):
        if request.method == "GET":
            print(nid)
            print(uid)
            return HttpResponse('15545')

    还有一种接受方式:

    def func(request,*args,**kwargs):
        pass
  • 相关阅读:
    NSURLConnection实现文件上传和AFNetworking实现文件上传
    scrollToItemAtIndexPath: atScrollPosition: animated:
    UIViewControllerTransitioningDelegate, UIViewControllerAnimatedTransitioning
    界面传值时数组赋值问题
    安装cocoapods遇到两大坑-Ruby版本升级和Podfile的配置
    iOS通知的整理笔记
    iOS简单实现毛玻璃效果
    iOS模态弹出半透明视图控制器
    友盟SDK实现分享
    iOS 本地存储四种方法
  • 原文地址:https://www.cnblogs.com/e0yu/p/9491874.html
Copyright © 2020-2023  润新知