我有一个关于错误网址的愚蠢问题......
在 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.
为什么我的网址在提交时更改?
编辑:奇怪的错误...
如果我使用模板上下文处理器来获取当前 url,我可以在我的模板中使用完整的当前 url:
<form action="{{ current_path }}" method="post">
当我显示它时,我得到 current_path="/user_app/update_profile?pk=1"
现在,当我提交表单时,我被重定向到“/users/admin/”并收到错误消息(我的网站中没有这样的 url)。这个网址来自哪里?