首页 > 解决方案 > 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)

标签: pythondjango

解决方案


将 urlpattern 更改review_detail

url(r'^reviews/(?P<RatingID>\d+)$', views.review_detail, name='review_detail'),

发生的事情是该视图的现有 urlpattern 正则表达式与下面的任何其他 url 匹配reviews/,因为后续的.+.


推荐阅读