如何解决在导航栏上打印用户模型属性
我正在尝试在导航栏上打印名字和公司名称,但没有打印出任何内容
base.html
<nav class="navbar navbar-expand-lg navbar-light bg-lightgrey">
<div class="collapse navbar-collapse" id="navbarNav">
{% if request.user.is_authenticated and request.user.is_student %}:
<ul class="navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link" href="{% url 'home' %}">Home<span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="{% url 'jobs' %}">Jobs</a>
</li>
</ul>
<ul class="navbar-nav ml-auto">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
{{student.first_name}}
</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="#">My Account</a>
<a class="dropdown-item" href="#">Change Password</a>
<a class="dropdown-item" href="{% url 'logout' %}">Logout</a>
</div>
</li>
</ul>
</ul>
{% elif request.user.is_authenticated and request.user.is_employer %}:
<ul class="navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link" href="{% url 'home' %}">Home<span class="sr-only(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Posts</a>
</li>
<li class="nav-item">
<a class="nav-link" href="jobs-create">Add Jobs</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Students</a>
</li>
</ul>
<ul class="navbar-nav ml-5">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
{{employer.company_name}}
</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="#">My Account</a>
<a class="dropdown-item" href="#">Change Password</a>
<a class="dropdown-item" href="{% url 'logout' %}">Logout</a>
</div>
</li>
</ul>
</ul>
{% else %}:
<ul class="navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link" href="{% url 'home' %}">Home<span class="sr-only">(current)</span></a>
</li>
</ul>
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link" href="{% url 'login' %}">Login</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Register
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown" style="min-width: 3rem;">
<a class="dropdown-item" href="{% url 'employee-register' %}">Employee</a>
<a class="dropdown-item" href="{% url 'employer-register' %}">Employer</a>
</div>
</li>
</ul>
</ul>
{% endif %}
</div>
</nav>
model.py
class User(AbstractUser):
username = None
email = models.EmailField(unique=True,blank=False)
date_joined = models.DateTimeField(auto_now_add=True)
is_active = models.BooleanField(default=True)
is_student = models.BooleanField(default=False)
is_employer = models.BooleanField(default=False)
objects = UserManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
class Student(models.Model):
user = models.OneToOneField(User,on_delete=models.CASCADE,related_name='student_profile',primary_key=True)
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
gender = models.CharField(max_length=10,choices=GENDER_CHOICES)
level = models.CharField(max_length=3,choices=LEVEL)
school = models.CharField(max_length=5,choices=SCHOOL)
major = models.CharField(max_length=40,default="")
cv = models.FileField(blank=True)
skills_or_trainings = models.TextField(default="")
def __str__(self):
return self.first_name + ' ' + self.last_name
class Employer(models.Model):
user = models.OneToOneField(User,related_name='employer_profile',primary_key=True)
company_name = models.CharField(max_length=200,blank=False)
company_address = models.TextField()
website = models.CharField(unique=True,max_length=100,blank=False)
def __str__(self):
return self.company_name
form.py
class UserRegistrationForm(UserCreationForm):
class Meta:
model = User
fields = ['email']
def save(self,commit=True):
user = super().save(commit=False)
if commit:
user.save()
return user
class EmployeeRegistrationForm(forms.ModelForm):
first_name = forms.CharField(label='First Name')
last_name = forms.CharField(label='Last Name')
cv = forms.FileField(label='CV')
skills_or_trainings = forms.SlugField(label='Skills or Trainings',required=False,widget=forms.Textarea)
class Meta:
model = Student
fields = ['first_name','last_name','gender','level','school','major','cv','skills_or_trainings' ]
class EmployerRegistrationForm(forms.ModelForm):
company_name = forms.CharField(label="Company Name")
company_address = forms.CharField(label="Company Address")
website = forms.CharField()
class Meta:
model = Employer
fields = ['company_name','company_address','website']
我不知道我是否做对了,还是有其他方法可以调用导航栏中的模型字段。如果我使用{{user.email}},它将打印出来,但是如果我使用{{student.first_name}},它将不会打印出任何东西
解决方法
使用{{ user.student.first_name }}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。