Django空请求对象

2024-10-04 01:25:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Django中有一个自定义的UpdateView,它应该管理给定对象的更新过程。我当前使用的是slug(对象的标识符,而不是pk),因此我用url模式中给定的slug名称定义字段“slug_field='cluster_id'”:

**views.py**

class LeopUpdateView(edit_views.UpdateView):
    model = leop_models.Cluster
    slug_field = 'cluster_id'
    form_class = leop_forms.LeopForm
    template_name = 'staff/leop_update.html'
    success_url = django_resolvers.reverse_lazy('leop_management')

    def get_object(self, queryset=None):
        print '>>> self.request.GET = ' + misc.dict_2_string(
            self.request.GET.dict()
        )
        print '>>> self.request.POST = ' + misc.dict_2_string(
            self.request.POST.dict()
        )

        print '>>> cluster_id = ' + str(self.request.GET.get('cluster_id'))
        print '>>> user = ' + str(self.request.user)
        print '>>> '
        return self.model.objects.get(
            identifier=self.request.GET.get('cluster_id')
        )

**urls.py**

urlpatterns = urls.patterns(
    '',
    urls.url(
        r'^update/(?P<cluster_id>\w+)/$',
        decorators.login_required(leop_views.LeopUpdateView.as_view()),
        name='leop_update'
    ),
)

但是,当我在视图中重写的“get_object”方法收到请求时请求.GET以及请求.POST对象是空的,slug没有设置;但是,用户名是在请求中设置的(以下是我在控制台中得到的输出):

^{pr2}$

由urlpattern生成并匹配的URL是:“/leop/update/elana/”

我做错什么了?我应该用另一种方式进入弹头区吗?在


Tags: 对象selfidurlgetrequestupdatepost
1条回答
网友
1楼 · 发布于 2024-10-04 01:25:08

在请求.GET包含querystring参数(?key=value&key1=value1)和请求.POSTcformontains发布数据(通常为表单)

我想错在这一行

slug_field = 'cluster_id'

应该是

^{pr2}$

slug_field应包含要用作搜索的模型字段的名称(根据url的字符)。在

另外,您不需要重写get_object

相关问题 更多 >