Python 为另一个视图使用Django会话存储名称值

Python 为另一个视图使用Django会话存储名称值,python,django,session,cookies,django-sessions,Python,Django,Session,Cookies,Django Sessions,Django在我填写表单时向我抛出的错误是:“GetSessionName”对象没有属性“name”,而且我以前从未使用过会话,所以我不知道如何解决这个问题。这个网站的想法是有一个小的登录屏幕,在那里你可以输入你的名字,然后转到聊天室 views.py from django.shortcuts import render, redirect from django.utils import timezone from .models import * from .forms import Ch

Django在我填写表单时向我抛出的错误是:“GetSessionName”对象没有属性“name”,而且我以前从未使用过会话,所以我不知道如何解决这个问题。这个网站的想法是有一个小的登录屏幕,在那里你可以输入你的名字,然后转到聊天室

views.py

from django.shortcuts import render, redirect
from django.utils import timezone
from .models import *
from .forms import Chat, GetSessionName

def chat(request):

    Messages = Message.objects.all().order_by('-created')

    form = Chat()


    if request.method == "POST":
        form = Chat(request.POST)
        if form.is_valid():
            form.save()
        return redirect ("chat")

    name = request.session['name']

    context = {"Message": Messages, "form": form, 'name': name}


    return render(request, 'chat/chat_messages.html', context)

def login(request):

    form = GetSessionName()

    if request.method == "POST":
        form = GetSessionName(request.POST)
        if form.is_valid():
            request.session['name'] = form.name
            return redirect('chat')

    context={'form': form}

    return render(request, 'chat/chat_login.html', context)  
forms.py

from django import forms
from django.forms import ModelForm
from .models import Message
from .models import *

class Chat(forms.ModelForm):

    class Meta:

        model = Message
        fields = "__all__"

class GetSessionName(forms.Form):

    name = forms.CharField(max_length=30)
chat_login.html

{% extends 'chat/base.html' %}
{% block content %}

<form method="POST" action="">
    {% csrf_token %}
    {{form}}
</form>

{% endblock content %}
{%extends'chat/base.html%}
{%block content%}
{%csrf_令牌%}
{{form}}
{%endblock内容%}

您显然正确使用了会话,但问题是如何在表单的目录中获取字段名。 您只需添加“已清理的数据” def登录(请求):

致意

form = GetSessionName()

if request.method == "POST":
    form = GetSessionName(request.POST)
    if form.is_valid():
        request.session['name'] = form.cleaned_data['name']
        return redirect('chat')

context={'form': form}

return render(request, 'chat/chat_login.html', context)