如何请求访问的上一页的URL并将其部分存储为ForeignKey?

时间:2014-09-25 12:03:11

标签: python django django-views django-urls

我有一个具有架构的django应用程序:

Myapp.com/< uniquepageURL>

用于向页面发布新内容:

Myapp.com/< uniquepageURL>/post  

评论页面上的特定帖子

Myapp.com/< uniquepageURL>/comment< ID# of the post>

例如,如果您评论存储在ID为22的数据库中的帖子,则URL应如下所示:

Myapp.com/< uniquepageURL>/comment22

这就是我决定映射我的网址的方式。有更好/更简单的方法吗? < uniquepageURL>也是我模型中post对象的ForeignKey。我遇到的问题是弄清楚如何在django中使用请求函数来查看url是什么,以便从中获取信息,即对于来自哪个唯一页面的帖子,这样我就可以将值保存到foreignkey字段中对于发布ID的评论,这是评论。每个人的观点会是什么样子? 这是我的urls.py. 对于帖子:

url(r'^(?P<uniquepageURL>[a-zA-Z0-9_.-]*)/post/$', views.post, name='post')

征求意见:

url(r'^(?P<uniquepageURL>[a-zA-Z0-9_./-]*)/comment(?P<post.pk>[0-9]*)/$', views.comment, name='comment')name='comment')ts:

我认为post.pk部分是错误的,因为它返回错误。但是,如果我能弄清楚如何让帖子部分至少起作用,我可以自己解决这个问题。

1 个答案:

答案 0 :(得分:1)

请注意?P<uniquepageURL>语法表示命名组; Django将尝试将该名称与view函数中的参数匹配(请参阅https://docs.djangoproject.com/en/1.7/topics/http/urls/#named-groups)。

因此,要将该值传递给view函数,只需包含参数uniquepageURL即可。请注意,post.pk表示名称不起作用;考虑post_id作为替代方案。 (虽然我认为您可以使用**kwargs构造并使用kwargs['post.pk']获取值。

也就是说,如果您确实需要请求网址中的其他信息,我认为您要查找的值为request.path(假设您的签名为def comment(request, uniquepageURL, post_id)或类似。