Python 主页的Django上下文值
我有一个模型,它接受管理员的布尔更新。如果管理员单击它,最终用户可以或不能访问a视图。问题在于,可以通过主页访问该视图,该主页有一个基本文件,并且需要用户的id进行检查。 我在/home/NoReverseMatch收到此错误 我无法理解如何将上下文值传递给基文件。我不想为创建另一个视图,因为它是一个基本文件 我尝试使用上下文处理器,但在home.view中出现此错误 int()参数必须是字符串或数字,而不是内置函数或方法 我在context_处理器中有两个函数,每个函数都有自己的特点 这是密码 设置.pyPython 主页的Django上下文值,python,django,django-models,django-views,django-urls,Python,Django,Django Models,Django Views,Django Urls,我有一个模型,它接受管理员的布尔更新。如果管理员单击它,最终用户可以或不能访问a视图。问题在于,可以通过主页访问该视图,该主页有一个基本文件,并且需要用户的id进行检查。 我在/home/NoReverseMatch收到此错误 我无法理解如何将上下文值传递给基文件。我不想为创建另一个视图,因为它是一个基本文件 我尝试使用上下文处理器,但在home.view中出现此错误 int()参数必须是字符串或数字,而不是内置函数或方法 我在context_处理器中有两个函数,每个函数都有自己的特点 这是密码
模板=[{
'BACKEND':'django.template.backends.django.DjangoTemplates',
“DIRS”:[],
“应用程序目录”:正确,
“选项”:{
“上下文处理器”:[
“django.template.context_processors.debug”,
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
“projectfiles.context\u processors.emp\u base\u context”,
“projectfiles.context\u processors.lev\u base\u context”,
],},},]
型号.py
class员工(models.Model):
允许=models.BooleanField(默认值=True)
employee_name=models.OneToOneField(用户,on_delete=models.CASCADE)
员工名称=型号.字符字段(最大长度=5)
employee\u department=models.CharField(最大长度=5)
年假=models.PositiveSmallIntegerField(默认值=5)
病假=models.PositiveSmallIntegerField(默认值=5)
休闲假=模型。积极的AllintegerField(默认值=5)
Half_pay=models.PositiveSmallIntegerField(默认值=5)
紧急离开=型号。积极的AllintegerField(默认值=5)
课堂假期(models.Model):
employee_leaves=models.ForeignKey(employee,on_delete=models.CASCADE)
left_Type=models.CharField(最大长度=25)
保留数量=型号。正MallintegerField(默认值=0)
description=models.CharField(最大长度=75,空白=True,空=True)
submit\u date=models.DateTimeField(自动\u now\u add=True)
from\u date=models.DateField(auto\u now=False,auto\u now\u add=False)
to_date=models.DateField(auto_now=False,auto_now_add=False)
leve_status=models.CharField(最大长度=10,默认值为“待定”)
context\u processors.py
from.models导入员工、休假
def emp_base_上下文(请求):
emp_data=Employee.objects.get(id=id)
返回{
'emp_base_context':emp_base_context}
url.py
urlpatterns=[
url(r'^(?i)Home/$',views.Home,name='Home-Page'),
url(r'^(?i)request/(?P\d+)$),views.request\u leave,
name='Leave-Page'),#请假请求
视图.py
def请假(请假,emp id):#请假
employee=employee.objects.get(id=emp\u id)
如果employee.allowed==True:
表格=请假表格(请寄)
如果form.is_有效():
abc=form.save(commit=False)
abc.employee\u leaves=request.user.employee
abc.save()
形式=离开形式
上下文={'employee':雇员,'form':form}
返回渲染(请求'projectfiles/reqleave.html',上下文)
其他:
返回渲染(请求“projectfiles/banked.html”)
base.html
class=“Glypicon文件夹关闭”>休假管理系统
请求页面****
一年生
剩余叶
紧急情况
剩余叶片
病假
剩余的假期
随意的
剩余的叶子
错误
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/home/
Django Version: 1.11.20
Python Version: 2.7.16
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'projectfiles',
'crispy_forms']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback:
File "C:\Python27\lib\site-packages\django\core\handlers\exception.py" in inner
41. response = get_response(request)
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\Bitswits 3\Desktop\Intern Work\LMS\LMS\projectfiles\views.py" in home
25. return render(request, "projectfiles/HomePage.html")
File "C:\Python27\lib\site-packages\django\shortcuts.py" in render
30. content = loader.render_to_string(template_name, context, request, using=using)
File "C:\Python27\lib\site-packages\django\template\loader.py" in render_to_string
68. return template.render(context, request)
File "C:\Python27\lib\site-packages\django\template\backends\django.py" in render
66. return self.template.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render
205. with context.bind_template(self):
File "C:\Python27\lib\contextlib.py" in __enter__
17. return self.gen.next()
File "C:\Python27\lib\site-packages\django\template\context.py" in bind_template
263. updates.update(processor(self.request))
File "C:\Users\Bitswits 3\Desktop\Intern Work\LMS\LMS\projectfiles\context_processors.py" in emp_base_context
7. emp_data = Employee.objects.get(id=id)
File "C:\Python27\lib\site-packages\django\db\models\manager.py" in manager_method
85. return getattr(self.get_queryset(), name)(*args, **kwargs)
File "C:\Python27\lib\site-packages\django\db\models\query.py" in get
371. clone = self.filter(*args, **kwargs)
File "C:\Python27\lib\site-packages\django\db\models\query.py" in filter
787. return self._filter_or_exclude(False, *args, **kwargs)
File "C:\Python27\lib\site-packages\django\db\models\query.py" in _filter_or_exclude
805. clone.query.add_q(Q(*args, **kwargs))
File "C:\Python27\lib\site-packages\django\db\models\sql\query.py" in add_q
1250. clause, _ = self._add_q(q_object, self.used_aliases)
File "C:\Python27\lib\site-packages\django\db\models\sql\query.py" in _add_q
1276. allow_joins=allow_joins, split_subq=split_subq,
File "C:\Python27\lib\site-packages\django\db\models\sql\query.py" in build_filter
1210. condition = self.build_lookup(lookups, col, value)
File "C:\Python27\lib\site-packages\django\db\models\sql\query.py" in build_lookup
1104. return final_lookup(lhs, rhs)
File "C:\Python27\lib\site-packages\django\db\models\lookups.py" in __init__
24. self.rhs = self.get_prep_lookup()
File "C:\Python27\lib\site-packages\django\db\models\lookups.py" in get_prep_lookup
74. return self.lhs.output_field.get_prep_value(self.rhs)
File "C:\Python27\lib\site-packages\django\db\models\fields\__init__.py" in get_prep_value
966. return int(value)
Exception Type: TypeError at /home/
Exception Value: int() argument must be a string or a number, not 'builtin_function_or_method'
错误2.0
Request Method: GET
Request URL: http://127.0.0.1:8000/home/
Traceback:
File "C:\Python27\lib\site-packages\django\core\handlers\exception.py" in inner
41. response = get_response(request)
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
Exception Type: TypeError at /home/
Exception Value: home() takes exactly 2 arguments (1 given)
已更新
url(r'^(?i)request/(?P<emp_id>\d+)$', views.request_leave,
name='Leave-Page'),
<a href="{% url "Leave-Page" request.user.id %}"><span class="glyphicon glyphicon-pencil text-primary"></span> Request Leave</>
def request_leave(request, emp_id): # Requesting leave
employee = Employee.objects.get(employee_name=emp_id)
if employee.allowed == True:
form = Leave_Form(request.POST)
if form.is_valid():
abc = form.save(commit=False)
abc.employee_leaves = request.user.employee
abc.save()
form = Leave_Form
context = {'employee': employee, 'form': form}
# context = {'form': form}
return render(request, 'projectfiles/reqleave.html', context)
else:
return render(request, "projectfiles/banned.html")
using context_processor was passing the id to the entire view, I just needed to use it for request and by comparing the user id with the employee name worked for me.
url(r'^(?i)request/(?P\d+)$),views.request\u leave,
name='Leave-Page'),
请假
def请假(请假,emp id):#请假
employee=employee.objects.get(employee\u name=emp\u id)
如果employee.allowed==True:
表格=请假表格(请寄)
如果form.is_有效():
abc=form.save(commit=False)
return {'emp_base_context': emp_base_context}
return {'emp_base_context': emp_data}
from .models import Employee, Leave
def emp_base_context(request):
emp_data = Employee.objects.get(id=id)
return {
'emp_base_context': emp_data}
def lev_base_context(request):
lev_data = Leave.objects.get(id=id)
return {
'lev_base_context': lev_data}
def emp_base_context(request):
emp_data = Employee.objects.get(id=id)
return {
'emp_base_context': emp_data}
>>> Test.objects.get(id=id)
Traceback (most recent call last):
TypeError: int() argument must be a string, a bytes-like object or a number, not 'builtin_function_or_method'
>>> id
<built-in function id>
def emp_base_context(request):
emp_data = Employee.objects.get(id=request.user.id)
return {
'emp_base_context': emp_base_context}