python - 在导航栏上打印用户模型属性
问题描述
我正在尝试在导航栏上打印名字和公司名称,但它没有打印出任何内容
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>
模型.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, on_delete=models.CASCADE, 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
表格.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 }}
推荐阅读
- java - Java中的直接ByteBuffer是否类似于C中的寄存器?
- scala - Spark无法使用查询作为表名将数据库表读取到带有jdbc的数据帧
- web-services - Web 服务子域托管与虚拟目录
- c# - 在抽象方法中使用继承的接口
- python - Flask-Sqlalchemy Missing BEGIN 似乎导致会话不同步
- node.js - 如何使用 NodeJs 获取 textDetection 和 LabelDetection?
- javascript - 布局上的行方向之间的大边距
- git - 当 git 历史不同但更改相同时如何发送拉取请求?
- ios - 是否可以使用 XCTest 中的最后一个匹配元素进行操作?
- javascript - jQuery对象输出未定义