Skip to main content
 首页 » 编程设计

python之view.py 中的问题 : message error Invalid literal for int() with base 10

2025年05月04日16lidabo

我为我的 Django 应用程序创建了以下结构:

../programs/  #home page for the app  
../program/id #detailed page about a specific program stored in the db 

但是,当我尝试从浏览器访问 ../programs/1(1 是我想查看详细信息的程序的 ID)时,出现以下错误:

ValueError at /programs/1/ 
invalid literal for int() with base 10: '1/' 
Request Method: GET 
Request URL:    http://127.0.0.1:8000/programs/1/ 
Django Version: 1.10.7 
Exception Type: ValueError 
Exception Value:     
invalid literal for int() with base 10: '1/' 

这是我的代码:

View .py

from django.http import Http404 
from django.shortcuts import render 
from .models import Step, Cycle, Program, MotorSetting, GeneralSetting 
from django.core.exceptions import ObjectDoesNotExist 
 
def index(request): 
   all_programs = Program.objects.all() 
   context = { 
       'all_programs': all_programs 
   } 
   return render(request, 'programs/index.html', context) 
 
 
def program(request, program_id): 
    try: 
        program = Program.objects.filter(id=program_id).get() 
        return render(request, 'programs/program.html', {'program':  
        program}) 
    except ObjectDoesNotExist: 
        raise Http404("A program with this ID does not exist yet.") 

程序.html

{{ program }} 

程序.urls.py

from django.conf.urls import url 
from . import views 
 
urlpatterns = [ 
    #frontend homepage 
    url(r'^$', views.index, name='index'), 
 
    #single program page 
    url(r'^(?P<program_id>[0-9]+/)$', views.program, name='program'), 
] 

模型.py

from django.db import models 
from django.core.validators import MaxValueValidator, MinValueValidator 
 
class Program(models.Model): 
    program_name = models.CharField(max_length=50) 
    program_description = models.CharField(max_length=250) 
    cycles = models.ManyToManyField(Cycle) 
 
    def __str__(self): 
        return self.program_name 

我似乎无法发现错误,希望有人能提供帮助。非常感谢!

请您参考如下方法:

图案 url(r'^(?P<program_id>[0-9]+/)$', views.program, name='program'),在你的urls.py捕获 /在program_id团体。像这样将其移出组:

from django.conf.urls import url 
from . import views 
 
urlpatterns = [ 
    #frontend homepage 
    url(r'^$', views.index, name='index'), 
 
    #single program page 
    url(r'^(?P<program_id>[0-9]+)/$', views.program, name='program'), 
                                 ^ here 
]