【问题标题】:django urls() invalid literal for int() with base 10:django urls() 以 10 为底的 int() 的无效文字:
【发布时间】:2019-03-16 00:00:16
【问题描述】:

我查看了this post 没有成功。

我有一个评论网站,我正在尝试按特定用户名发布所有评论。即“.../reviews/user/username”。

urls.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: invalid literal for int() with base 10: 'user/username'”。我觉得错误在 urls.py 部分甚至之前,因为我已经多次更改了 views.py 函数并且错误没有改变。

我使用的是 Django 版本 1.11.6。

谢谢

这是来自反馈的额外内容...

主 urls.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'),

]

models.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)

【问题讨论】:

  • Review 模型长什么样?此外,拥有完整的错误消息会很有用。
  • 请发布您的模型和完整的错误消息,并带有完整的追溯。
  • 您的路径正在被另一个 URL 模式捕获。您需要显示完整的 urls.py。
  • 感谢所有反馈...所有内容都已添加到原始帖子中。

标签: python django


【解决方案1】:

review_detail 的 urlpattern 更改为

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

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

【讨论】:

  • 完美。谢谢。
猜你喜欢
  • 2012-01-22
  • 1970-01-01
  • 1970-01-01
  • 2017-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-09
相关资源
最近更新 更多