代码之家  ›  专栏  ›  技术社区  ›  Giulia

正在考虑的问题。py:message error Invalid literal for int()(以10为基数)

  •  1
  • Giulia  · 技术社区  · 7 年前

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

    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/'
    

    视图.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.")
    

    {{ program }}
    

    程序.url.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
    

    2 回复  |  直到 7 年前
        1
  •  3
  •   Kendas    7 年前

    模式 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
    ]
    
        2
  •  3
  •   Aniket Pawar    7 年前

    url(r'^(?P<program_id>[0-9]+/)$', views.program, name='program'),
    

    url(r'^(?P<program_id>[0-9]+)/$', views.program, name='program'),