2015-10-30 17 views
0

我有一些我正在構建的網站的代碼。屬性user.grade不能在Django模板中引用

在我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模板語言, {{ user.username }}我的HTML代碼

{{ user.email }}顯示完美,但爲什麼不會{{ user.grade }}以同樣的方式工作?

+0

在這種情況下,您正在調用哪個視圖?如果我們沒有應用它的背景,那麼給我們所有的視圖代碼是沒有用的。 –

回答

2

grade不是Django的User模型的屬性,但是是UserInfo的屬性,你需要需要使用類似:

{{ user.user_infos.grade }} 

哪裏user_infos是related_name模型中的(應該是OneToOneField吧? ):

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

hehe thanks @Richard :) – doniyor

+0

沒有麻煩:) @ doniyor –

+0

我會在哪裏添加這個?在我的models.py? @doniyor –