如何在 django url 中转义“/”

Posted

技术标签:

【中文标题】如何在 django url 中转义“/”【英文标题】:How to escape '/' in django urls 【发布时间】:2022-01-10 13:35:05 【问题描述】:

我正在开发一个生成动态网址的项目 例如,如果您键入 mysite.com/ 该网站应该生成一个带有 mysite.com/yourtexthere 的 url(其中 yourtext here 是一个模型的 slug)和我能够做到这一点,但是当我输入类似 mysite.com/yourtexthere/moretext 之类的内容时出现问题,Django 与我现有的任何 URL 模式都不匹配并给我 404。

我想问有没有一种方法可以将“/”视为另一个字符并生成唯一的 url mymysite.com/yourtexthere/moretext where yourtexthere/moretext 现在是蛞蝓。

views.py

def textview(request, slug):
    obj, created= Text.objects.get_or_create(slug=slug, defaults='text':'', 'password':'123')
    return render(request, 'text/textpage.html', 'obj' : obj, 'created' : created)

urls.py

# Only patterns
urlpatterns = [
    path('', home, name='home'),
    path('<slug:slug>/', textview, name='textview'),
]

【问题讨论】:

如果您需要更多信息,请发表评论 【参考方案1】:

来自 Django models docs:

slug 是某事物的短标签,仅包含字母、数字、下划线或连字符。

所以 404 实际上是正确的,也许使用另一个字段。

【讨论】:

以上是关于如何在 django url 中转义“/”的主要内容,如果未能解决你的问题,请参考以下文章

如何在 django 标签中转义双引号?

如何在 URL 中转义哈希字符

如何在 Swift 中转义 HTTP 参数

如何在 maven pom 属性值中转义“&”[重复]

在 URL 中转义 & 符号

如何在 sed 中转义斜杠和双引号和单引号?