[英]Django rendering a db field in the template
有人可以更正我的代码吗?
背景:
一旦进入“ start.html”模板,该用户将输入其名称,然后按提交。 然后在下一个模板“ game.html”上,应该有一个包含该用户名的段落标签。
问题:
由于用户名未显示在“ game.html”模板上,因此我必须写错了一些内容。 或者,我也可能将其存储为错误。 任何建议或纠正将不胜感激!
models.py-fp
from django.db import models
class Player(models.Model):
#first player name
fp_name = models.CharField(max_length=30, default='')
forms.py-我不确定是否真的需要...?
from django import forms
class PlayerInfo(forms.Form):
fp_name = forms.CharField(max_length=30, label='First player name')
views.py
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render, render_to_response
import os
from .forms import PlayerInfo
from .models import Player
def index(request):
return render(request, 'index.html')
def start(request):
if request.method == 'Post':
form = PlayerInfo(request.POST)
if form.is_valid():
obj = Player()
obj.fp_name = form.cleaned_data['fp_name']
return HttpResponseRedirect('/')
else:
form = PlayerInfo()
return render(request, 'start.html')
def game(request):
return render_to_response('game.html', {'obj': Player.objects.all()})
start.html-表示提交玩家姓名
{% extends 'base.html' %}
{% block botRow %}
<form method="post">
{% csrf_token %}
<label for="fp_name">First Player Name</label>
<input id="fp_name" type="text" name="fp_name" maxlength="30" required />
<input type="submit" value="Submit" />
</form>
{% endblock %}
game.html-表示玩家姓名的意思
{% extends 'base.html' %}
{% block midRow %}
<p>{{ obj.fp_name }}</p>
{% endblock %}
在game.html
的obj
是查询集合中的所有的Users
,所以你应该遍历这个列表,旁观块用于在文档:
{% extends 'base.html' %}
{% block midRow %}
{% for user in obj %}
<p>{{ user.fp_name }}</p>
{% endfor %}
{% endblock %}
使用User.objects.all(),您可以获得所有站点用户的集合。 它不是当前用户。 因此,该集合没有参数fp_name。 使用request.user获取当前登录的用户。
另外,您的代码中有些冗余:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.