Django 无法使用函数从一个视图访问另一个视图的变量?

Django 无法使用函数从一个视图访问另一个视图的变量?,django,python-2.7,django-forms,django-templates,django-views,Django,Python 2.7,Django Forms,Django Templates,Django Views,我已经用Django写了一份登记表。我正在尝试将成功注册的用户的名称从view1(register\u user)传递到view2(register\u success)。这样用户就可以在注册成功页面上看到他的名字。 下面是两个视图 视图1 视图2 注册_success.html {% extends "base.html" %} {% block content %} <h2>Hey {{ full_name }}, Greetings .. You have

我已经用Django写了一份登记表。我正在尝试将成功注册的用户的名称从view1(register\u user)传递到view2(register\u success)。这样用户就可以在注册成功页面上看到他的名字。 下面是两个视图

视图1

视图2

注册_success.html

{% extends "base.html" %}
{% block content %}
           <h2>Hey {{ full_name }}, Greetings .. You have registered successfully !</h2>
           <p>Click <a href="/accounts/login/">here</a> to login again</p>
{% endblock %}

访问username变量时哪里出错了?

您不能通过从外部视图调用视图来访问任意变量。您可以将数据作为URL参数或消息传递

通过使用URL参数:

def registration(request):
    do_registration()
    return redirect(reverse('registration_success') + '?u=%s' % get_username)

def registration_success(request):
    username = request.GET.get('u', None)
    return render(request, 'my_template', {'username': username})
或通过信息:

from django.contrib.messages import get_messages

def my_view(request):
    # Process your form data from the POST, or whatever you need to do

    # Add the messages, as mentioned above
    messages.add_message(request, messages.INFO, form.cleaned_data['name'])

    return HttpResponseRedirect('/other_view_url/')

def other_view(request):
    storage = get_messages(request)
    name = None
    for message in storage:
        name = message
        break
    return render(request, 'general/other_view.html', {'name': name})

第二个片段摘自。

您的一般方法有点偏离。如果您正在编写注册成功视图,它将不会从“注册表单提交”视图中获取表单数据。这不是网络的工作方式。我将通过从success视图上的请求中获取用户来处理这个问题,假设您使用的是普通Django用户包的某个版本——这是一个非常常用的路径,用于识别哪个用户正在发出给定的请求。彼得·德格洛珀明白你的意思了,先生。因此,我尝试在success\u register视图中使用request.user.username,但无法检索用户名。我不知道我哪里出错了。实现了你的方式,现在它工作得很好。荣誉
AttributeError at /accounts/register_success/
'HttpResponse' object has no attribute 'give_username'
Request Method:     GET
Request URL:    http://127.0.0.1:8000/accounts/register_success/
Django Version:     1.9.2
Exception Type:     AttributeError
Exception Value: 

'HttpResponse' object has no attribute 'give_username'
Exception Location:     /home/harish/django/django/django_test/django_test/views.py in register_success, line 56
Python Executable:  /home/harish/django/django/bin/python
Python Version:     2.7.6
Python Path:    

['/home/harish/django/django/django_test',
 '/home/harish/django/django/local/lib/python2.7/site-packages/Django-1.9.2-py2.7.egg',
 '/home/harish/django/django/lib/python2.7/site-packages/Django-1.9.2-py2.7.egg',
  '/home/harish/django/django/lib/python2.7']
Server time:    Thu, 4 Feb 2016 05:44:16 +0000
def registration(request):
    do_registration()
    return redirect(reverse('registration_success') + '?u=%s' % get_username)

def registration_success(request):
    username = request.GET.get('u', None)
    return render(request, 'my_template', {'username': username})
from django.contrib.messages import get_messages

def my_view(request):
    # Process your form data from the POST, or whatever you need to do

    # Add the messages, as mentioned above
    messages.add_message(request, messages.INFO, form.cleaned_data['name'])

    return HttpResponseRedirect('/other_view_url/')

def other_view(request):
    storage = get_messages(request)
    name = None
    for message in storage:
        name = message
        break
    return render(request, 'general/other_view.html', {'name': name})