python - django urls() 以 10 为底的 int() 的无效文字:
问题描述
我看过这篇文章没有成功。
我有一个评论网站,我正在尝试按特定用户名发布所有评论。即“.../评论/用户/用户名”。
网址.py:
urlpatterns = [
...
url(r'^reviews/user/(?P<username>\w+)$', views.user_review_list, name='user_review_list'),
]
views.py(User_Name 是数据库中列的名称):
def user_review_list(request, username):
latest_review_list = Review.objects.filter(User_Name=username).order_by('-Pub_Date')
context = {'latest_review_list': latest_review_list, 'User_Name': username}
return render(request, 'bourbons/user_review_list.html', context)
以及我称之为的 html 文件:
<h5>Rated {{ review.Rating }} of 5 by <u><a href="{% url 'app:user_review_list' review.User_Name %}" style="color:#ffffff">
{{ review.User_Name }}
</a></u></h5>
我发现了其他几个使用不同方法的帖子,但我仍然不断收到错误消息:“ValueError:int() 的无效文字,基数为 10:'user/username'”。我觉得错误在 urls.py 部分甚至之前,因为我已经多次更改了 views.py 函数并且错误没有改变。
我正在使用 Django 版本 1.11.6。
谢谢
这是来自反馈的额外内容...
主要网址.py
from django.conf.urls import url, include
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
from . import views
urlpatterns = [
url(r'^$', views.home, name='home'),
url(r'^facts', views.facts, name='facts'),
url(r'^contact', views.contact, name='contact'),
url(r'^admin', include(admin.site.urls)),
url(r'^app/', include('app.urls',
namespace='app')),
url(r'^accounts/', include('registration.backends.simple.urls')),
url(r'^accounts/', include('django.contrib.auth.urls',
namespace="auth")),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
应用程序 urls.py
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.bourbon_list, name='app_list'),
url(r'^app/(?P<ID>.+)$', views.app_detail, name='app_detail'),
url(r'^reviews$', views.review_list, name='review_list'),
url(r'^reviews/(?P<RatingID>.+)$', views.review_detail, name='review_detail'),
url(r'^reviews/user/(?P<username>\w+)$', views.user_review_list, name='user_review_list'),
]
模型.py
class Review(models.Model):
RATING_CHOICES = (
(1, '1'),
(2, '2'),
(3, '3'),
(4, '4'),
(5, '5'),)
RatingID = models.IntegerField(null=True, blank=True)
Item = models.ForeignKey(App)
Pub_Date = models.DateTimeField('date published')
User_Name = models.CharField(max_length=100)
Comment = models.CharField(max_length=200)
Rating = models.IntegerField(choices=RATING_CHOICES)
解决方案
将 urlpattern 更改review_detail
为
url(r'^reviews/(?P<RatingID>\d+)$', views.review_detail, name='review_detail'),
发生的事情是该视图的现有 urlpattern 正则表达式与下面的任何其他 url 匹配reviews/
,因为后续的.+
.
推荐阅读
- sql - 将过滤后的值显示为整体的百分比
- xml - 我怎样才能使这个布局背景完全变黑?
- mongodb - 如何从 mongo 管道的同一阶段访问属性?
- openssl - 从 EVP_PKEY 到缓冲区的 OpenSSL 公钥
- java - 如何从 C/C++ 在 JNI for Java 中创建 UTF16 字符串?
- tcl - 变量未在 openOCD 目标事件过程中设置
- java - m2Eclips 插件:解决工作区工件 - 这是一个好习惯吗
- google-app-engine - 是否可以将 Google App Engine Flexi 与 Cloud Nat 连接起来
- python - Python:使用按钮和标签显示从函数返回的文本
- powershell - PowerShell:根据动态接口索引添加新路由