python django如何在单击单个员工的姓名时仅显示其相关信息
我是python django的新手,试图创建一个员工记录项目,在django管理站点上我添加了一些员工及其信息,在django站点上,我有一个针对单个员工的超链接,但是当我单击个人名称时,下一页显示的是所有员工信息,而不是特定的信息,我怎样才能只显示我单击的员工的信息?请帮忙,谢谢 models.pypython django如何在单击单个员工的姓名时仅显示其相关信息,python,django,Python,Django,我是python django的新手,试图创建一个员工记录项目,在django管理站点上我添加了一些员工及其信息,在django站点上,我有一个针对单个员工的超链接,但是当我单击个人名称时,下一页显示的是所有员工信息,而不是特定的信息,我怎样才能只显示我单击的员工的信息?请帮忙,谢谢 models.py from django.db import models import datetime class Employee(models.Model): '''An employee's
from django.db import models
import datetime
class Employee(models.Model):
'''An employee's information.'''
full_name = models.CharField(max_length=100)
address = models.CharField(max_length=100)
city = models.CharField(max_length=100)
state = models.CharField(max_length=100)
zip = models.CharField(max_length=100)
hire_date = models.DateField(default=datetime.date.today)
def __str__(self):
'''Return a string representation of the model.'''
return self.full_name
return self.address
return self.city
return self.state
return self.zip
return self.hire_date
views.py
from django.shortcuts import render
from .models import Employee
def index(request):
'''The home page for employee_record.'''
return render(request, 'employee_records/base.html')
def employees(request):
'''Shows all employees'''
employees = Employee.objects.order_by('full_name')
context = {'employees': employees}
return render(request, 'employee_records/employees.html', context)
def employee(request, employee_id):
'''Show a single employee and all his records.'''
employee = Employee.objects.get(id=employee_id)
objects = Employee.objects.all
context = {'employee': employee, 'objects': objects}
return render(request, 'employee_records/employee.html', context)
url.py
'''Defines URL patterns for employee_records.'''
from django.urls import path
from . import views
app_name = 'employee_records'
urlpatterns = [
# Home page
path('', views.employees, name='employees'),
# Detail page for a single employee
path('employees/<int:employee_id>/', views.employee, name='employee'),
]
''定义员工记录的URL模式''
从django.url导入路径
从…起导入视图
应用程序名称='员工记录'
URL模式=[
#主页
路径(“”,views.employees,name='employees'),
#单个员工的详细信息页面
路径('employees/',views.employee,name='employee'),
]
base.html
<p>
<a href="{% url 'employee_records:employees' %}">Employee-Record</a>
</p>
{% block content %}{% endblock content %}
{%block content%}{%endblock content%}
employees.py
{% extends 'employee_records/base.html' %}
{% block content %}
<ul>
{% for employee in employees %}
<li>
<a href="{% url 'employee_records:employee' employee.id %}">{{ employee }}</a>
</li>
{% empty %}
{% endfor %}
</ul>
{% endblock content %}
{%extends'employee_records/base.html%}
{%block content%}
{employees%%中的员工为%s}
-
{%empty%}
{%endfor%}
{%endblock内容%}
employee.html
{% extends 'employee_records/employees.html' %}
{% block content %}
<p>{{ employee }}
{% for object in objects %}
<li>{{ object.full_name }}</li>
<li>{{ object.address }}</li>
<li>{{ object.city }}</li>
<li>{{ object.state }}</li>
<li>{{ object.zip }}</li>
<li>{{ object.hire_date }}</li>
{% empty %}
<li>There are no records for this employee yet.</li>
{% endfor %}
</p>
{% endblock content %}
{%extends'employee_records/employees.html%}
{%block content%}
{{employee}}
{对象%中的对象的%}
{{object.full_name}
{{object.address}}
{{object.city}
{{object.state}
{{object.zip}}
{{object.hire_date}
{%empty%}
还没有此员工的记录
{%endfor%}
{%endblock内容%}
models.py
#您应该只有一个return语句
员工类别(models.Model):
“员工信息”
全名=models.CharField(最大长度=100)
地址=models.CharField(最大长度=100)
城市=型号.CharField(最大长度=100)
state=models.CharField(最大长度=100)
zip=models.CharField(最大长度=100)
hire\u date=models.DateField(默认值为datetime.date.today)
定义(自我):
''返回模型的字符串表示形式''
返回self.full\u名称
views.py
#你必须改变员工的职能
def员工(请求、员工id):
''显示单个员工''
尝试:
employee=employee.objects.get(id=employee\u id)
除Employee.DoesNotExist外:
雇员=无
上下文={'employee':employee}
返回呈现(请求'employee_records/employee.html',上下文)
employee.html
{%extends'employee_records/employees.html%}
{%block content%}
{%if employee%}
- {{employee.full_name}
- {{employee.address}
- {{employee.city}
- {{employee.state}
- {{employee.zip}
- {{雇员.雇用日期}
{%endif%}
{%endblock内容%}
实现它的另一种方法是使用内置的get\u object\u或\u 404方法
个人观点
您正在使用
{%for objects%}
对所有员工进行显式检查。
models.py
# you should have only one return statement
class Employee(models.Model):
'''An employee's information.'''
full_name = models.CharField(max_length=100)
address = models.CharField(max_length=100)
city = models.CharField(max_length=100)
state = models.CharField(max_length=100)
zip = models.CharField(max_length=100)
hire_date = models.DateField(default=datetime.date.today)
def __str__(self):
'''Return a string representation of the model.'''
return self.full_name
views.py
# you have to change employee function
def employee(request, employee_id):
'''Show a single employee'''
try:
employee = Employee.objects.get(id=employee_id)
except Employee.DoesNotExist:
employee = None
context = {'employee': employee}
return render(request, 'employee_records/employee.html', context)
employee.html
{% extends 'employee_records/employees.html' %}
{% block content %}
{% if employee %}
<ul>
<li>{{ employee.full_name}}</li>
<li>{{ employee.address}}</li>
<li>{{ employee.city}}</li>
<li>{{ employee.state}}</li>
<li>{{ employee.zip}}</li>
<li>{{ employee.hire_date}}</li>
</ul>
{% endif %}
{% endblock content %}
from django.shortcuts import get_object_or_404
def employee(request, employee_id):
employee = get_object_or_404(Employee, employee_id=employee_id)
context = {'employee': employee}
return render(request, 'employee_records/employee.html', context)