2017-08-10 18 views
1

と私は私のDjangoアプリケーションのための次のような構造を作成しました。 (1私は詳細を確認したいプログラムのIDである)./programs/1私は次のエラーを取得する:ここで問題:int型の無効なリテラルのメッセージエラー()ベース10

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

は私のコードです:

views.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.html

{{ program }} 

programs.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'), 
] 

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

私はことを願って、エラーを見つけるように見えることはできませんあなたの誰かが助けることができます。ありがとうございます!

答えて

3

にパターンurl(r'^(?P<program_id>[0-9]+/)$', views.program, name='program'),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 
] 
3

変更あなたのurls.pyでURL正規表現から '/' の位置、

変更

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

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