我试图删除我的urls
中的尾部斜杠,或者在末尾添加斜杠时进行重定向。我试图从Internet上的资源上执行此操作,但它对我不起作用。我想我做错了什么。
- 网址. py-应用程序**
app_name = 'shop'
urlpatterns = [
# product
path('', views.product_list, name='product_list'),
path('show/<slug:slug>', views.product_show, name='product_show'),
path('<slug:category>', views.product_list, name='lst_by_ctgry'),
path('<slug:category>/<slug:subcategory>', views.product_list, name='lst_by_subctgry'),
path('<slug:category>/<slug:subcategory>/<slug:kind>', views.product_list, name='lst_by_knds'),
# info - these urls doesn't work without slashes. works only with slashes
path('pad', views.pad, name='pad'),
path('guarantee', views.guarantee, name='guarantee'),
path('contacts', views.contacts, name='contacts'),
path('about', views.about, name='about'),
path('privacy', views.privacy, name='privacy')
]
- 网址. py-项目**
urlpatterns = [
path('', include('orders.urls')),
path('', include('cart.urls')),
path('', include('shop.urls')),
path('admin/', admin.site.urls),
]
- 设置. py**
APPEND_SLASH = False
REMOVE_SLASH = True
MIDDLEWARE = [
...
'django.middleware.common.CommonMiddleware',
...
]
请你给一个例子,我怎么才能删除所有网址尾随斜线或获得重定向
2条答案
按热度按时间4c8rllxm1#
虽然建议使用尾部斜杠,但是如果你不想使用,你可以在你的项目的
settings.py
文件中修改它。默认值为
True
。参见文档。
vhipe2zx2#
我认为目前得票最高的答案,并没有真正回答提出的问题。
默认情况下(APPEND_SLASH = TRUE),如果Django找不到一个请求的URL(比如https://smartavery.com/about),它会寻找相同的URL并附加一个斜杠(比如https://smartavery.com/about/),如果找到,则重定向到它(301).改变这个默认行为(APPEND_SLASH = FALSE)只会导致Django发送一个404错误而不是301重定向.
OP问的是相反的问题。“我怎样才能删除尾部斜杠或者获得重定向?"。我的(* unhelped )答案是检查你的代码库,从URL定义中删除尾部斜杠。Django不会为你“修复”它。
Django的一个惯例是建议始终使用尾随斜杠( 我不太喜欢 *)。Here是Google关于这个主题的更广泛的讨论。历史上,尾随斜杠意味着目录,没有尾随斜杠意味着文件。
我个人喜欢我的URL没有一个尾随斜线,但作为Django中的一个实际问题