gpt4 book ai didi

python - Django 中的动态 URL

转载 作者:太空宇宙 更新时间:2023-11-04 01:00:58 25 4
gpt4 key购买 nike

所以我有一个项目列表,我想让所有项目在单击时将用户引导到关于该项目的标准信息页面。我不完全理解 django 中的动态 url 系统。我的内容 html 文件称为 detail.html。目标是单击电影项目,然后定向到页面标题“blahblah.com/specific_movie_title”

在 views.py 中我有:

def detail(reuqest, movie_title):
moviePage = Movie.objects.get(pk=movie_title)
return render_to_response('detail.html', {'detail':moviePage, RequestContext(request))

在 urls.py 中,我必须与之相对应的行是:

url(r'^$', views.detail, name='detail')

我可以得到帮助来更正这两 block 代码吗?

最佳答案

在 django 中,url 由正则表达式模式匹配。

url的一般格式行是:

url(the_pattern, the_view_name_or_callable, **any_extra_arguments)

重点是the_pattern , 这是一个正则表达式,匹配的任何内容都可以作为参数传递给 View 函数。

重要的是,捕获并传递给 View 函数的模式的任何部分实际上都与函数的签名匹配(def 行,您在其中定义名称和参数)。否则,django 会抛出错误。

所以现在,抛开这个问题 - 让我们处理实际问题。

你想要一个类似 /the_great_gatsby 的 url重定向到了不起的 Gatsby 页面。

第一步是识别匹配 the_great_gatsby 的模式.您可以使用 [_\w]+表示“一个或多个单词字符或 _”,并将其插入 URL:

url(r'/[_\w]+$', views.detail, name='detail')

接下来,您必须告诉 django 如何捕获该模式并将其作为参数传递给 View 方法。

您的查看方法是:def detail(request, movie_title) .所以 django 必须传递 / 之后的任何内容在 url 中(并匹配模式)到参数名称 movie_title ,所以我们想要的是:

def detail(request, movie_title)
^^^^^^^^^^^
---------------|
|
vvvvvvv
url(r'/[_\w]+$', views.detail, name='detail')

我们修改正则表达式以确保 django 捕获任何匹配项,然后为其分配一个名称。为此,将正则表达式的一部分包装在 (?P<name_of_variable>expression) 中像这样:

url(r'/(?P<movie_title>[_\w+])$', views.detail, name='detail')

现在,无论在 / 之后捕获什么将作为参数传递 movie_titleviews.detail方法。


当然,您必须确保您的 View 函数正确处理捕获的字符串。在您的情况下,您的 View 方法是按主键搜索的,并且不会产生任何结果(并且会引发异常),因为没有电影将标题作为主键;但那是另一个问题。

关于python - Django 中的动态 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32941771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com