gpt4 book ai didi

Django:从URL分发程序传递数据以查看而不将数据包含在URL中?

转载 作者:行者123 更新时间:2023-12-04 04:43:58 25 4
gpt4 key购买 nike

我已经决定要根据存储在数据库对象中的名称在Django中动态创建URL。所有这些页面都应由同一 View 处理,但是我希望将数据库对象在调用时作为参数传递给该 View 。那可能吗?

这是我目前拥有的代码:

places = models.Place.objects.all()
for place in places:
name = place.name.lower()
urlpatterns += patterns('',
url(r'^'+name +'/$', 'misc.views.home', name='places.'+name)
)

是否可以在不向URL添加更多参数的情况下将额外的信息传递给 View ?由于这些URL用于根目录,并且我仍然需要404页才能显示其他值,因此我不能只使用字符串参数。是放弃尝试将URL添加到根目录的解决方案,还是有其他解决方案?

我想我可以对名称本身进行查找,因为所有URL都必须是唯一的。那是唯一的其他选择吗?

最佳答案

这通常是一个坏主意,因为它将查询数据库中的每个请求,而不仅是与该模型相关的请求。一个更好的主意是提出通用的url组成,并对所有URL都使用相同的 View 。然后,您可以检索 View 中的相关位置,只有在到达该特定 View 时,它才会命中数据库。

例如:

urlpatterns += patterns('',
url(r'^places/(?P<name>\w+)/$', 'misc.views.home', name='places.view_place')
)

# views.py
def home(request, name):
place = models.Place.objects.get(name__iexact=name)
# Do more stuff here

我意识到这不是您真正要求的,但应该可以减轻您的麻烦。

关于Django:从URL分发程序传递数据以查看而不将数据包含在URL中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4708749/

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