通过 urlpatterns 和视图替换 django-postman 中的默认表单
Posted
技术标签:
【中文标题】通过 urlpatterns 和视图替换 django-postman 中的默认表单【英文标题】:Replacing default forms in django-postman via urlpatterns and views 【发布时间】:2019-12-18 11:43:24 【问题描述】:django-postman docs 说你可以用这个替换视图中的默认表单:
urlpatterns = patterns('postman.views',
# ...
url(r'^write/(?:(?P<recipients>[^/#]+)/)?$',
WriteView.as_view(form_classes=(MyCustomWriteForm, MyCustomAnonymousWriteForm)),
)
但是patterns
是什么?我从哪里导入它,这段代码会去哪里?在项目的 urls.py 中?
我的项目级别 urls.py 目前包括 django-postman,如文档中所建议的那样,如下所示:
urlpatterns = [
...
url("r'messages/', include('postman.urls', namespace='postman'),
]
所以自定义 url 模式应该覆盖已经包含在 urls.py 中的默认值。
【问题讨论】:
【参考方案1】:是的,这是urls.py
的代码。但是,它已经过时了。
现代版本看起来像:
from django.urls import re_path
urlpatterns = [
re_path(r'^write/(?:(?P<recipients>[^/#]+)/)?$',
WriteView.as_view(form_classes=(MyCustomWriteForm, MyCustomAnonymousWriteForm)),
]
编辑
我猜您在根 urls.py 中包含邮递员 url,然后您可以执行以下操作来覆盖其中一个:
urlpatterns = [
...
re_path(r'^messages/write/(?:(?P<recipients>[^/#]+)/)?$',
WriteView.as_view(form_classes=(MyCustomWriteForm, MyCustomAnonymousWriteForm)),
path('messages/', include('postman.urls')),
]
【讨论】:
谢谢!命名空间去哪儿了?看起来这将出现在根 url 中,而不是“邮递员”命名空间中?以上是关于通过 urlpatterns 和视图替换 django-postman 中的默认表单的主要内容,如果未能解决你的问题,请参考以下文章
使用 angular $http 和 django urlpatterns 来获取 json 文件