• 分组,命名分组,url的命名和反向解析


    1.位置分组

    匹配到参数,按照位置参数的方式传递给视图函数 视图函数需要定义形参接收变量

      1.写在url里面的:

        # 删除
        url(r'^del_class/(d+)',views.del_class),
    

      2.写在html里面的:

    <a class="btn btn-danger btn-sm" href="/del_class/{{ i.pk }}/">删除</a>
    

      3.写在视图函数里面的:

    def del_class(request,pk):#在request后面写传进来的参数   可以设置默认值
        if not models.ClassTable.objects.filter(pk=pk):
            return HttpResponse('数据不存在')
        models.ClassTable.objects.get(pk=pk).delete()
        return redirect('/class_list/')
    

    2命名分组:

      匹配到关键字参数,按照关键字参数的方式传递给视图函数 视图函数需要定义关键字参数

      传到视图函数里面的必须是关键字参数名

        # 删除
        url(r'^del_class/(?P<pk>d+)',views.del_class),  

    捕获的参数永远都是字符串

    参数说明:

    • 正则表达式:一个正则表达式字符串
    • views视图:一个可调用对象,通常为一个视图函数
    • 参数:可选的要传递给视图函数的默认参数(字典形式)
    • 别名:一个可选的name参数

    注意:

    Django 2.0版本中的路由系统是下面的写法(官方文档):

    from django.urls import path,re_path
    
    urlpatterns = [
        path('articles/2003/', views.special_case_2003),
        path('articles/<int:year>/', views.year_archive),
        path('articles/<int:year>/<int:month>/', views.month_archive),
        path('articles/<int:year>/<int:month>/<slug:slug>/', views.article_detail),
    ]
    View Code

    3.include其他的urls.py

    把urls.py放到app里面,

      项目里的urls  导入app里面的urls.py

    from django.conf.urls import url,include#印可肉的
    from django.contrib import admin
    from app01 import views
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'app01/',include('app01.urls'))
    ]      多个app上面可以额外的写前缀  

    4.URL的命名和反向解析

    给url起别名:

      1.普通url

        # 删除
        url(r'^del_class/(?P<pk>d+)',views.del_class,name='bieming' ),  

    通过url的名字反向解析拿出rul的东西

      2.使用

    在视图函数里引入模块    用reverse    拿出来的是字符串类型的

    from django.urls import  reverse
    reverse('别名')  # ——》 ‘/app01/del_class/’

     模板中使用:  如果有命名分组的话,要给命名分组传值

    <a class="btn btn-danger btn-sm" href="{% url 'bieming' i.pk %}">删除</a>
    

      

    namespace指定名称空间
    url(r'app01/',include('app01.urls',namespace='app01')),
    url(r'app02/',include('app02.urls',namespace='app02'))

    app里面的

    url(r'^home/$', views.home, name='home'),   # app01
    

      

    视图:

    ​ reverse(’app01:home‘) ——》 /app01/home/

    ​ reverse(’app02:home‘) ——》 /app02/home/

    模板:

    ​ {% url 'app01:home' %} —》 /app01/home/

  • 相关阅读:
    扩展GridView控件增加选择列
    Flash图片轮换/切换左右推拉效果
    Flash图片轮换/切换普通效果1
    WebForm_PostBackOptions未定义 解决方法
    SQL Server 2008无法还原日志备份或差异备份的问题解决(转)
    一个简单的C#多线程间同步的例子.[转]
    SQL2008报错:无法还原日志备份或差异备份,因为没有文件可用于前滚(转)
    C# 字符、字符串过滤,只能输入数字、中文、英文、大写、小写(转)
    C# Monitor类锁定对象
    使用SqlServer中的float类型时发现的问题(转)
  • 原文地址:https://www.cnblogs.com/xihuanniya/p/10071728.html
Copyright © 2020-2023  润新知