• Danjgo学习笔记(三)----创建视图函数二


    # re_path笔记

    1. re_path和path的作用都是一样的。只不过`re_path`是在写url的时候可以用正则表达式,功能更加强大。
    2. 写正则表达式都推荐使用原生字符串。也就是以`r`开头的字符串。
    3. 在正则表达式中定义变量,需要使用圆括号括起来。这个参数是有名字的,那么需要使用`?P<参数的名字>`。然后在后面添加正则表达式的规则。示例代码如下:
    ```python
    from django.urls import re_path
    from . import views

    urlpatterns = [
    # r"":代表的是原生字符串(raw)
    re_path(r'^$',views.article),
    # /article/list/<year>/
    re_path(r"^list/(?P<year>d{4})/$",views.article_list),
    re_path(r"^list/(?P<month>d{2})/$",views.article_list_month)
    ]
    ```
    4. 如果不是特别要求。直接使用`path`就够了,省的把代码搞的很麻烦(因为正则表达式其实是非常晦涩的,特别是一些比较复杂的正则表达式,今天写的明天可能就不记得了)。除非是url中确实是需要使用正则表达式来解决才使用`re_path`。

    # reverse笔记(反转url)
    1. 如果在反转url的时候,需要添加参数,那么可以传递`kwargs`参数到`revers`函数中。示例代码如下:
    ```python
    detail_url = reverse('detail',kwargs={"article_id":1,'page':2})
    ```
    2. 如果想要添加查询字符串的参数,则必须手动的进行拼接。示例代码如下:
    ```python
    login_url = reverse('login') + "?next=/"
    ```

    # url传递参数:

    ## url映射:
    1. 为什么会去urls.py文件中寻找映射呢?
    是因为在`settings.py`文件中配置了`ROOT_URLCONF`为`urls.py`。所有django会去`urls.py`中寻找。
    2. 在`urls.py`中我们所有的映射,都应该放在`urlpatterns`这个变量中。
    3. 所有的映射不是随便写的,而是使用`path`函数或者是`re_path`函数进行包装的。

    ## url传参数
    1. 采用在url中使用变量的方式:在path的第一个参数中,使用`<参数名>`的方式可以传递参数。然后在视图函数中也要写一个参数,视图函数中的参数必须和url中的参数名称保持一致,不然就找不到这个参数。另外,url中可以传递多个参数。
    2. 采用查询字符串的方式:在url中,不需要单独的匹配查询字符串的部分。只需要在视图函数中使用`request.GET.get('参数名称')`的方式来获取。示例代码如下:
    ```python
    def author_detail(request):
    author_id = request.GET['id']
    text = '作者的id是:%s' % author_id
    return HttpResponse(text)
    ```
    因为查询字符串使用的是`GET`请求,所以我们通过`request.GET`来获取参数。并且因为`GET`是一个类似于字典的数据类型,所有获取值跟字典的方式都是一样的。

    ## url参数的转换器
    1. str:除了斜杠`/`以外所有的字符都是可以的。
    2. int:只有是一个或者多个的阿拉伯数字。
    3. path:所有的字符都是满足的。
    4. uuid:只有满足`uuid.uuid4()`这个函数返回的字符串的格式。
    5. slug:英文中的横杆或者英文字符或者阿拉伯数字或者下划线才满足。

    # 自定义过滤器笔记
    1. 首先在某个app中,创建一个python包,叫做`templatetags`,注意,这个包的名字必须为`templatetags`,不然就找不到。
    2. 在这个`templatetags`包下面,创建一个python文件用来存储过滤器。
    3. 在新建的python文件中,定义过滤器(也就是函数),这个函数的第一个参数永远是被过滤的那个值,并且如果在使用过滤器的时候传递参数,那么还可以定义另外一个参数。但是过滤器最多只能有2个参数。
    4. 在写完过滤器(函数)后,要使用`django.template.Library.filter`进行注册。
    5. 还要把这个过滤器所在的这个app添加到`settings.INSTALLED_APS`中,不然Django也找不到这个过滤器。
    6. 在模板中使用`load`标签加载过滤器所在的python包。
    7. 可以使用过滤器了。
    8. `django.template.Library.filter`还可以当作装饰器来使用。如果`filter`函数没有传递任何参数,那么将会使用这个函数的名字来作为过滤器的名字。当然如果你不想使用函数的名字来作为过滤器的名字,也可以传递一个`name`参数。示例代码如下:
    ```python
    @register.filter('my_greet')
    def greet(value,word):
    return value + word
    ```

  • 相关阅读:
    字符串匹配算法
    C#中窗体的位置和大小
    关于C#值类型,引用类型,值传递,引用传递(转载)
    ArcMap中设置.mxd相对路径
    统计学上的知识
    .NET 数学实现资料(ZZ)
    牛腩新闻系统学习笔记06讲 编写SQLHelper
    DropDownList 控件不能触发SelectedIndexChanged 事件的另一个原因
    牛腩新闻视频 03讲 数据库设计的心得 如何建立外键sql2008的数据库关系图功能
    使用sql server management studio 2008 连接数据库,无法查看数据库,提示 无法为该请求检索数据 错误916
  • 原文地址:https://www.cnblogs.com/xifengqidama/p/11338192.html
Copyright © 2020-2023  润新知