通用视图的url参数

时间:2013-08-21 03:45:55

标签: django url url-parameters django-generic-views

我有一个关于错误网址的愚蠢问题......

在html菜单中:

<a href="/user_app/update_profile?pk={{ user.pk }}">Update my profile</a>

在urls.py中:

urlpatterns = patterns('',
    (r'^update_profile', login_required(UpdateProfile.as_view())),
)

在view.py中:

class UpdateProfile(UpdateView):
    form_class = UpdateProfileForm
    template_name = "user_app/update_profile.html"

    #add a success message if the form is valid
    def form_valid(self, form):
        messages.success(self.request, "Your profile has been updated.", extra_tags='success')
        return super(UpdateProfile, self).form_valid(form)

    #modifcation: display the user's data given his primary key
    def get_object(self):
        return UserModel.objects.get(pk=self.request.GET.get('pk'))

在我的模板update_profile.html中:

<form action="." method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>

现在我的问题...... 从菜单中我点击“更新我的个人资料”。网址是“/ user_app / update_profile?pk = 1”。页面显示,我可以更改数据。现在我点击提交以保存修改。我希望程序保留在页面上,但它不会,它会更改为“/ user_app /”。并且django显示以下错误:

Using the URLconf defined in arpaso.urls, Django tried these URL patterns, in this order:
^/?$
^auth/?$
^user_app/? ^show_profile
^user_app/? ^update_profile
The current URL, user_app/, didn't match any of these.

为什么我的网址在提交时更改了?

编辑:奇怪的错误......

如果我使用模板上下文处理器获取当前网址,我可以在模板中使用完整的当前网址:

<form action="{{ current_path }}" method="post">

当我显示它时,我得到current_path =“/ user_app / update_profile?pk = 1”

现在,当我提交表单时,我被重定向到“/ users / admin /”并收到错误(我的网站中没有这样的网址)。这个网址来自哪里?

1 个答案:

答案 0 :(得分:0)

编辑:已解决!

我刚刚将get_success_url添加到我的视图中,现在它可以正常工作:):

def get_success_url(self):
    succ_url =  '/user_app/update_profile?pk='+self.request.GET.get('pk')
    return succ_url
相关问题