如何在Django中在两个视图之间发送大量文本
我需要一个建议,关于如何在Django中在两个视图之间传递大量文本。下面的代码是我想到的,但首先它不工作,其次我不知道用cookies是否更好。
<form method="POST"> {% csrf_token %}
{{ form.post }} <!-- This is a textarea, the user can write as much as he wants -->
<input type="submit" value="Prepare to send">
</form>
然后:
def sender(request):
if form.is_valid():
cd = form.cleaned_data
letter = cd['post']
next = reverse('new_view', kwargs={'post':post})
return HttpResponseRedirect(next)
def new_view(request, post=''):
return render(request, 'new_view.html', {'post': post})
在urls.py中:
url(r'^new_view/', new_view, {'post':'baam'}, name='new_view'),
这引发了这个异常:
Exception Type: NoReverseMatch
Exception Value: Reverse for 'new_view' with arguments '()' and keyword arguments '{'post': u''}' not found. 1 pattern(s) tried: ['new_view/']
1 个回答
1
根据你定义的链接,new_view
这个链接不接受任何参数,所以你会遇到错误。
而且像你提到的那样在链接中传递数据,特别是大数据,这其实不是个好主意。使用 Cookies 或者 Django 会话会更好。
如果你想使用 Django 会话,可以更新你的视图,具体方法如下:
def sender(request):
if form.is_valid():
cd = form.cleaned_data
letter = cd['post']
request.session['post_data'] = letter
next = reverse('new_view',)
return HttpResponseRedirect(next)
def new_view(request,):
post_data = request.session.get('post_data')
return render(request, 'new_view.html', {'post': post})