django - 为什么Django pagenotAnTntger 除了生成?
问题描述
我有服务器错误!
我想制作projectBoard主页 当我点击作品的标题时,我想显示作品的详细信息。
但是 pageNotAnInteger 除了生成
在 projectMain.html 中
<a href="{% url 'fileDetail' file_title=post.file_title %}"> {{ post.file_title }} </a>
通过这句话,我想深入到写作的细节。
但是,我不能。
我以为这些过程
点击文章的标题。
在 projectMain.html 中,代码 ,
<a href="{% url 'fileDetail' file_title=post.file_title %}"> {{ post.file_title }} </a>
被执行。然后, '
urlpattern url(r'^project/(?P<file_title>.+)/$', views.fileDetail, name='fileDetail'),'
被执行在views.py中,函数fileDetail()被执行,执行projectDetail.html会被渲染
但导致 pageNotAnIntegerError
我该如何解决?
项目Main.html
{% extends 'Project/projectBase.html' %}
{% block content %}
<div class="container">
<!-- Page Heading/Breadcrumbs -->
<div class="row">
<h1 class="col mt-4 mb-3">Project
</h1>
<div class="col mt-4 mb-4 input-group">
<input type="text" class="form-control" placeholder="Search for...">
<span class="input-group-btn">
<button type="submit", class="btn btn-secondary">Go!</button>
</span>
</div>
</div>
<a href="{% url 'newFile' project_name=project_name%}"> <p> FileUpload </p> </a>
<a href="{% url 'branchAdminCertification' project_name=project_name%}"> <p> Set mainBranch </p> </a>
<div class="row">
{% for post in posts %}
<div class="col-lg-4 col-sm-6 portfolio-item">
<div class="card h-100">
<div class="thumbnail-wrapper">
<div class="thumbnail">
<h4 class="card-title">
<a href="{% url 'fileDetail' file_title=post.file_title %}"> {{ post.file_title }} </a>
</h4>
</div>
</div>
<div class="card-body">
<p>{{post.origin_date}}에 게시</p>
<p>작성자 : {{post.user_name}}</p>
<p class="card-text">
{% if post.content|length > 65%}
{{ post.content|slice:"0:65"|add:" ..."}}
{% else %}
{{ post.content }}
{% endif %}
</p>
</div>
</div>
</div>
{% endfor %}
</div>
{% if posts.has_other_pages %}
<!-- Pagination -->
<ul class="pagination justify-content-center">
{% if posts.has_previous %}
<li class="page-item"><a class="page-link" href="?page=1">«</a></li>
{% else %}
<li class="disabled"><span>«</span></li>
{% endif %}
{% for i in posts.paginator.page_range %}
<li class="page-item"><a class="page-link" href="?page={{ i }}">{{ i }}</a></li>
{% endfor %}
{% if posts.has_next %}
<li class="page-item"><a class="page-link" href="?page={{ max_index }}">»</a></li>
{% else %}
<li class="disabled"><span>»</span></li>
{% endif %}
</ul>
{% endif %}
</div>
{% endblock %}
projectDetail.html
{% extends 'Project/projectBase.html' %}
{% block content %}
<!-- Page Content -->
<div class="post">
<div class="container">
<!-- Page Heading/Breadcrumbs -->
<h1 class="mt-4 mb-3">{{ post.file_title }}</h1>
<div class="row">
<!-- Post Content Column -->
<div class="col-lg-12">
<!-- Date/Time -->
<p>{{post.final_date}}에 최종 게시됨.</p>
<p>작성자 : {{post.user_name}}</p>
<hr>
<!-- Post Content -->
<p class="lead"> {{ post.content|linebreaksbr }} </p>
<hr>
<p>Parent ID : {{post.parent_file_id}}</p>
<p>This file ID : {{post.file_id}}</p>
<hr>
{% if post.file %}
<hr>
<a id="id_uploaded_file" href="{{ post.file.url }}" download> 첨부파일 다운로드 </a>
{% endif %}
<hr>
<a href="{% url 'editFile' file_title=post.file_title %}">edit</a>
<hr>
</div>
</div>
<!-- /.row -->
</div>
</div>
{% endblock %}
视图.py
def mainProject(request, project_name):
check = auth_test(request)
posts = ProjectFiles.objects.filter(project_name = project_name)
posts = posts.order_by('-origin_date')
paginator = Paginator(posts, 6)
page = request.GET.get('page')
try:
posts = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
posts = paginator.page(1)
print("PageNotAnInteger")
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
posts = paginator.page(paginator.num_pages)
max_index = len(paginator.page_range)
return render(request, 'Project/projectMain.html', {
'project_name': project_name,
'posts': posts,
#'check ' : check,
'max_index': max_index,})
def fileDetail(request, file_title):
check = auth_test(request)
post = get_object_or_404(ProjectFiles, project_name=check['project_name'], file_title=file_title)
project_name = post.project_name
return render(request, 'Project/projectDetail.html', {'post': post, 'check': check,
'file_title': file_title,
'project_name': project_name,})
我认为它可能是从制作文件中生成的,我添加了文件制作代码
项目编辑.html
{% extends 'Project/projectBase.html' %}
{% block content %}
<div class="container">
<!-- Page Heading/Breadcrumbs -->
<h1 class="mt-4 mb-3">Upload & Edit </h1>
<form
method="POST"
action=""
enctype="multipart/form-data"
>
{% csrf_token %}
{{ form.as_p }}
<br>
<h10> upload files.</h10>
<br>
<button type="submit" class="save btn btn-default">Save</button>
</form>
</div>
{% endblock %}
视图.py
def newFile(request, project_name):
check = auth_test(request)
if request.method == "GET":
form = FileForm()
elif request.method == "POST":
form = FileForm(request.POST, request.FILES)
if form.is_valid():
post = form.save(commit=False)
post.origin_date = timezone.now()
post.final_date = timezone.now()
post.user_name=check['user_name']
post.project_name=check['project_name']
post.save()
return redirect(reverse('mainProject', kwargs={'project_name': project_name}))
ctx = {
'project_name' : project_name,
'form': form,
'check': check
}
return render(request, 'Project/projectEdit.html', ctx)
环境:
Request Method: GET
Request URL: http://127.0.0.1:8000/project/test1/
Django Version: 2.1.2
Python Version: 3.7.0
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'Project']
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']
追溯 :
File "C:\Users\Kimsunwoo\Anaconda3\lib\site-packages\django\core\paginator.py" in validate_number
40. number = int(number)
During handling of the above exception (int() argument must be a string, a bytes-like object or a number, not 'NoneType'), another exception occurred:
File "C:\Users\Kimsunwoo\Anaconda3\lib\site-packages\django\core\handlers\exception.py" in inner
34. response = get_response(request)
File "C:\Users\Kimsunwoo\Anaconda3\lib\site-packages\django\core\handlers\base.py" in _get_response
126. response = self.process_exception_by_middleware(e, request)
File "C:\Users\Kimsunwoo\Anaconda3\lib\site-packages\django\core\handlers\base.py" in _get_response
124. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\Kimsunwoo\SEI\DjangoProject\Project\views.py" in mainProject
158. posts = paginator.page(page)
File "C:\Users\Kimsunwoo\Anaconda3\lib\site-packages\django\core\paginator.py" in page
67. number = self.validate_number(number)
File "C:\Users\Kimsunwoo\Anaconda3\lib\site-packages\django\core\paginator.py" in validate_number
42. raise PageNotAnInteger(_('That page number is not an integer'))
Exception Type: PageNotAnInteger at /project/test1/
Exception Value: 페이지 번호가 정수가 아닙니다.
解决方案
推荐阅读
- r - ggtern 错误(在 `stat_density_tern()` 中:未使用的参数 (z.range = z.range))
- flutter - MaterialApp 和“使用不包含 MediaQuery 的上下文调用的 MediaQuery.of()”
- angularjs - 如何模拟包含第三方对象的窗口对象
- javascript - ReactJS 多输入问题 setState 和 state
- selenium - 捕获以文本框和可编辑格式显示的警报消息文本
- linux - 如何在 Linux Centos 7 上安装 Gnatcoll Postgres
- java - JaversException COMMITTING_TOP_LEVEL_VALUES_NOT_SUPPORTED
- c# - 如何将方法“utilities.DecryptStringFromBase64String”的调用限制为一次
- tensorflow - Tensorflow 在 Eager Execution 模式下循环切片分配给变量
- java - 如何防止 Eclipse 中出现流利的资源泄漏警告?