Python Django URL正则表达式
我在为django应用程序定义URL时遇到问题 我想要它,这样当我打字时 我能读一篇文章 我可以编辑一篇文章 目前,我对它的定义如下:Python Django URL正则表达式,python,regex,django,url,Python,Regex,Django,Url,我在为django应用程序定义URL时遇到问题 我想要它,这样当我打字时 我能读一篇文章 我可以编辑一篇文章 目前,我对它的定义如下: url(r'^post/(?P<id>\d+)/edit/$', 'board.views.edit_post', name='edit_post'), url(r'^post/(?P<id>\d+)', 'board.views.view_post', name='view_post'), 及 好吧,
url(r'^post/(?P<id>\d+)/edit/$',
'board.views.edit_post',
name='edit_post'),
url(r'^post/(?P<id>\d+)',
'board.views.view_post',
name='view_post'),
及
好吧,我建议您开始使用基于类的视图,另外,为什么不呢。可以让你的生活更轻松,大多数时候,你写得更少
class UpdatePost(UpdateView):
model = Post # assuming you've made from your_app.models import Post call already
fields = ['title', 'content', 'pub_date'] # for demonstration purposes
template_name = 'post_form.html'
@method_decorator(login_required) #Use login required on your dispatch method
def dispatch(self, request, *args, **kwargs):
pulled = Post.objects.get(id=kwargs['id'])
if pulled.created_by == request.user: #just to verify person making edit is rightly disposed to do so
return super(UpdatePost, self).dispatch(request, *args, **kwargs)
raise PermissionDenied
像这样在你的url中甜蜜地截取id
url(r'^app/edit/(?P<id>\d+)/$', views.UpdatePost.as_view(), name='edit'),
我就是这样做的。我从我的工作项目中提取了这个,但是还没有测试这个经过调整的版本。但是它应该可以工作。确定视图函数的命名正确吗?这些路线看起来不错。当你最后用/尝试时会发生什么?例如:/post/{{post.id}}/edit/hmm,这很奇怪。。在这种情况下,让我添加我的view\u post和edit\u postviews@GustavoMeiraI get:AttributeError at/post/5/edit/和“tuple”对象没有属性“get”,因为您错过了在edit\u post结束时渲染的调用:您只是直接返回参数。
class UpdatePost(UpdateView):
model = Post # assuming you've made from your_app.models import Post call already
fields = ['title', 'content', 'pub_date'] # for demonstration purposes
template_name = 'post_form.html'
@method_decorator(login_required) #Use login required on your dispatch method
def dispatch(self, request, *args, **kwargs):
pulled = Post.objects.get(id=kwargs['id'])
if pulled.created_by == request.user: #just to verify person making edit is rightly disposed to do so
return super(UpdatePost, self).dispatch(request, *args, **kwargs)
raise PermissionDenied
url(r'^app/edit/(?P<id>\d+)/$', views.UpdatePost.as_view(), name='edit'),