如何在表单视图中捕获查询字符串参数?

时间:2014-11-24 01:30:38

标签: python django django-forms

我正在尝试设置一个表单,以便捕获表单提交的页面以及用于将访问者重定向回该页面。该表单显示在网站的每个页面上,并包含在base.html模板中。这是一个Django 1.7项目。

我愿意采用与我不同的方法,如果有更好的方法请建议。

在settings.py中

TEMPLATE_CONTEXT_PROCESSORS = TCP + (
    'django.core.context_processors.request',
)

在views.py中。

def submit_user_content(request):
  path = request.GET.return_url
  user = request.user
  text_content = request.POST['user_content']
  UserContent(url = path, author = user, content = text_content).save()
  return redirect( return_url, context_instance=RequestContext(request, processors=[user_content]))

在base.html中

<form id="submit_user_content" method="post" action="/myapp/submit_user_content/?return_url={{ request.path|urlencode }}">
  {% csrf_token %}
  <textarea name="user_content" form="submit_user_content" rows="8" cols="80"></textarea>
  <input type="submit" value="Submit" />
</form>

在提交表单的浏览器中,它将转到:

http://127.0.0.1:8000/myapp/submit_user_content/?return_url=/myapp/defin/

并产生此错误:

AttributeError at /myapp/submit_user_content/
'QueryDict' object has no attribute 'return_url'

虽然在回溯中我看到请求填充了以下内容:

'<WSGIRequest\npath:/myapp/submit_user_content/,\nGET:<QueryDict: {u\'return_url\': [u\'/myapp/defin/\']}>'

获取return_url的正确方法是什么?或者有更好的方法将表单重定向回用户所在的页面并捕获上一页的路径吗?

1 个答案:

答案 0 :(得分:3)

他们检索GET参数略有偏离。

尝试

request.GET.get('return_url')

request.GET['return_url']