• django_url路由控制系统



    Django URL(路由系统)

    一、语法
    urlpatterns = [
    path(正则表达式,views视图函数,参数,别名)
    ]

    参数说明:
    1.一个正则表达式字符串
    2.一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串
    3.可选的要传递给视图函数的默认参数(字典形式)
    4.一个可选的name参数
    例如:
    urlpatterns = [
    path('admin/',admin.site.urls), #默认的
    path('blog/',views.blog),
    ]

    二、正则字符串参数

    urlpatterns = [
    url(r'^articles/2003/$', views.special_case_2003),
    url(r'^articles/([0-9]{4})/$', views.year_archive),
    url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),
    url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail),
    ]
    注:一旦匹配成功则不再匹配后面的
    若要从URL中捕获一个值,只需要在它周围放置一对圆括号
    不需要添加一个前导的反斜杠,因为每个URL都有。例如,应该是 ^ articles而不是 ^ / articles
    每个正则表达式前面的'r'是可选的但是建议加上

    设置是否开启URL访问地址后面不为/跳转至带有/的路径
    APPEND_SLASH=True


    三、有名分组(named group)
    在Python 正则表达式中,命名正则表达式组的语法是(?P<name>pattern),其中name 是组的名称,pattern 是要匹配的模式
    from django.conf.urls import url
    from . import views

    urlpatterns = [
    url(r'^articles/2003/$', views.special_case_2003),
    url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
    url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive),
    url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/$', views.article_detail),
    ]
    注:d代表数字
    {4}说明重复四次
    ?P有名分组
    <year>真正的名字


    ###实例:
    url 文件

    urlpatterns = [
    path('admin/', admin.site.urls),
    #无名分组
    path('article1/d{4}', views.article_year0), #得到固定的
    path('article2/(d{4})',views.article_year), #输入什么得到什么
    path('article3/(d{4})/(d{2})',views.article_year_month),
    path('article4/(d{4})/(d{2})/(d{2})',views.article_year_month_day),

    #有名分组
    url(r'article5/(?P<year>d{4})/(?P<month>d{2})/(?P<day>d{2})',views.article_year_month_day),

    path('register/',views.register,name="reg"), #reg是别名
    ]

    ###views文件
    #输出固定的2004
    def article_year0(request):
    return HttpResponse("2004")
    #根据输入来输出
    def article_year(request,year): #year就是url里面的参数
    return HttpResponse(year)
    def article_year_month(request,year,month):
    return HttpResponse("year:%s month:%s"%(year,month))
    def article_year_month_day(request,year,month,day):
    return HttpResponse("year:%s month:%s day:%s"%(year,month,day))


    ##别名的使用

    urlpatterns = [
    path('register/',views.register,name="reg"), #reg是别名
    ]

    ##views文件
    def register(request):
    if request.method == "POST":
    print(request.POST.get("user"))
    print(request.POST.get("age"))
    print(request.POST.get("hobby"))
    user = request.POST.get("user")
    if user == "kang":
    return redirect('/login/') #跳转到页面login

    return HttpResponse("success!")
    return render(request,"register.html")

    ##html文件

    <h1>学生注册</h1>
    <hr>
    <form action="{% url "reg" %}" method="post">
    <p>姓名<label>
    <input type="text" name="user">
    </label></p>
    <p>年龄<label>
    <input type="text" name="age">
    </label></p>
    <p>爱好<label>
    <input type="checkbox" name="hobby" value="篮球">
    </label>篮球
    <label>
    <input type="checkbox" name="hobby" value="足球">
    </label>足球
    <label>
    <input type="checkbox" name="hobby" value="乒乓球">
    </label>乒乓球
    </p>
    <p><input type="submit">提交</p>
    </form>

    四、路由分发
    urls文件配置
    from django.contrib import admin
    from django.urls import path,include

    urlpatterns = [
    path('admin/', admin.site.urls),
    path('app/',include('app.urls')),
    ]

    然后在APP下面建立urls.py文件,在这个里面写APP下的url
  • 相关阅读:
    地区列表
    storyboard
    快捷键2
    关于本地缓存
    深入浅出Cocoa之消息
    ARC和Non-ARC下的单例模式
    runloop原理介绍
    ARC内存管理机制详解
    解决UITableViewCell separator左侧不贴边
    UICollectionView的使用
  • 原文地址:https://www.cnblogs.com/shadowfolk/p/15019095.html
Copyright © 2020-2023  润新知