如何在Django中在两个视图之间发送大量文本

0 投票
1 回答
677 浏览
提问于 2025-04-18 17:33

我需要一个建议,关于如何在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})

撰写回答