Python 为另一个视图使用Django会话存储名称值
Django在我填写表单时向我抛出的错误是:“GetSessionName”对象没有属性“name”,而且我以前从未使用过会话,所以我不知道如何解决这个问题。这个网站的想法是有一个小的登录屏幕,在那里你可以输入你的名字,然后转到聊天室 views.pyPython 为另一个视图使用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
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)