Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django URL正则表达式_Python_Regex_Django_Url - Fatal编程技术网

Python 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'), 及 好吧,

我在为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'),


好吧,我建议您开始使用基于类的视图,另外,为什么不呢。可以让你的生活更轻松,大多数时候,你写得更少

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'),