繁体   English   中英

Django模板中无法引用属性user.grade

[英]Attribute user.grade cannot be referenced in Django template

我有一些正在构建的网站的代码。

在我的views.py ,我有以下代码:

                    from django.shortcuts import render
                    from django.http import HttpResponse, HttpResponseRedirect
                    from django.conf.urls import url
                    from .models import UserInfo, Events
                    from django import forms
                    from .forms import RegisterForm, LoginForm, OrderForm
                    from django.contrib.auth.models import User
                    from django.shortcuts import redirect
                    from django.views.decorators.csrf import csrf_exempt
                    from django.contrib.auth import authenticate, login, logout
                    # Create your views here.

                    def home(request):
                        return render(request, 'student/index.html')

                    @csrf_exempt
                    def signin(request):
                        print "login"
                        if request.method == 'POST':
                            form = LoginForm(request.POST)
                            username = request.POST['username']
                            password = request.POST['password']
                            print "input username ", username
                            try:
                                if form.is_valid():
                                    user = authenticate(username=username, password=password)
                                    if user is not None:
                                        print "user not none"
                                        print user.username
                                        print user.email
                                        login(request,user)
                                        return redirect("/")
                                    else:
                                        print "login failed"
                                        raise forms.ValidationError({'username':['Invalid username/password']})
                                else:
                                    print form.errors
                            except:
                                raise


                        else:
                            print "hello"
                            form = LoginForm()

                        return render(request, 'student/login.html', {'form': form})

                    @csrf_exempt
                    def signup(request):
                        print "signup"
                        if request.method == 'POST':
                            print "post signup"
                            form = RegisterForm(request.POST)
                            try:
                                if form.is_valid():
                                    print form.cleaned_data
                                    u = User.objects.create_user(form.cleaned_data['emailid'], form.cleaned_data['emailid'], form.cleaned_data['passwd1'] )

                                    ui = UserInfo()
                                    ui.user = u
                                    ui.class_of = form.cleaned_data['gradyear']
                                    ui.grade = form.cleaned_data['grade']
                                    ui.balance = 0

                                    ui.save()
                                    user = authenticate(username=form.cleaned_data['emailid'], password=form.cleaned_data['passwd1'])
                                    login(request,user)
                                    print "after login in signup"
                                    return redirect("/")


                                else:
                                    print "error"
                                    print form.errors
                            except:
                                raise
                                print "error here"
                                print form.errors
                                pass
                                #return render(request, 'student/register.html', {'form': form})

                        else:
                            form = RegisterForm()

                        return render(request, 'student/register.html', {'form': form})

                    def forgotpassword(request):
                        if request.method == 'POST':
                            form = LoginForm(request.POST)
                            if form.is_valid():
                                # process the data in form.cleaned_data as required
                                # ...
                                # redirect to a new URL:

                                print form.cleaned_data
                                return HttpResponseRedirect('/thanks/')
                            else:
                                print "INVALID"
                                print form.errors
                        else:
                             form = LoginForm()
                        return render(request, 'student/forgotpassword.html')


                    def studentinfo(request):
                        return render(request, 'student/studentinfo.html', {} )

                    def error(request):
                        return render(request, 'student/LoginError.html', {} )

                    def site_logout(request):
                        logout(request)
                        return redirect("/")
                        #return render(request, 'student/studentinfo.html', {} )

                    def order(request):
                        if request.method == 'POST':
                            form = 0
                        return render(request, 'student/orderform.html')

                    def dashboard(request):
                        user = request.user
                        return render(request, 'student/dashboard.html', {'user': user})

                    def blog(request):
                        return render(request, 'student/blog.html')

这是我的models.py ,其中UserInfo是:

from django.db import models
from django.contrib.auth.models import User 

class UserInfo(models.Model):
    user = models.ForeignKey(User)
    class_of = models.IntegerField()
    #username = user.username
    #fname = user.first_name
    #lname = user.last_name
    #email = user.email
    #Staff = user.is_staff
    pub_date = models.DateTimeField( auto_now=True)
    grade = models.IntegerField()
    balance = models.DecimalField(max_digits=6, decimal_places=2)

class Events(models.Model):
    name = models.CharField(max_length = 80)
    date = models.DateTimeField()
    cost = models.DecimalField(max_digits = 6, decimal_places = 2)
    def __unicode__(self):
        return str(self.name)
# Create your models here.

在使用Django模板语言的HTML代码中, {{ user.username }}{{ user.email }}完美显示,但是为什么{{ user.grade }}不能以相同的方式工作?

grade不是Django User模型的属性,而是UserInfo的属性,您需要使用类似以下内容的东西:

{{ user.user_infos.grade }}

其中user_infos是模型中的user_infos (应该是OneToOneField对吗?):

user = models.OneToOneField(User, related_name='user_infos')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM