1

django アプリで ID でデータを取得しようとしています。問題は、ユーザーがクリックする ID の種類がわからないことです。以下のコードをビューに入力します。

ビュー

def cribdetail(request, meekme_id):
    post=Meekme.objects.get(id=meekme_id)
    return render_to_response('postdetail.html',{'post':post, 'Meekme':Meekme},context_instance=RequestContext(request))

Urlconf

url(r'^cribme/(?P<meekme_id>)\d+/$', 'meebapp.views.cribdetail', name='cribdetail'),

テンプレート内:

<a href="{% url cribdetail post.id %}">{{ result.object.title }}</a> 

テンプレートで上記のリンクをクリックすると、次のエラーが表示されます。

ValueError at /cribme/0/

invalid literal for int() with base 10: ''

Request Method:     GET
Request URL:    http://127.0.0.1:8000/cribme/0/
Django Version:     1.4
Exception Type:     ValueError
Exception Value:    

invalid literal for int() with base 10: ''

Exception Location:     C:\Python27\lib\site-packages\django\db\models\fields\__init__.py in get_prep_value, line 537
Python Executable:  C:\Python27\python.exe
Python Version:     2.7.3

しばらくの間、これと戦っています。どうすればそのエラーを取り除くことができますか?

4

4 に答える 4

1

あなたの urlconf が原因であるように見えますが、次のようになります。

url(r'^cribme/(?P<meekme_id>\d+)/$', 'meebapp.views.cribdetail', name='cribdetail'),

いいえ:

url(r'^cribme/(?P<meekme_id>)\d+/$', 'meebapp.views.cribdetail', name='cribdetail'),

?P<meekme_id>は、「この名前の括弧内に一致する文字列を与えることを意味します。 () は何も一致しません。これが、アプリが id の項目を検索しようとするとエラーを返す理由です''

括弧で を囲むと\d+、自然数に一致します。これは機能するはずです。

于 2012-06-29T15:34:10.973 に答える
1

urlconf の正規表現には少し調整が必要です。

url(r'^cribme/(?P<meekme_id>\d+)/$', 'meebapp.views.cribdetail', name='cribdetail'),

が括弧の外側にあるため、パラメータの値meekme_idがキャプチャされていませんでした。\d+

于 2012-06-29T15:34:13.850 に答える
0

URLの問題に加えて、そもそも正しいリンクを生成していません。参照してresult.object.titleいるpost.idのはテンプレートです。そのため、URLにはIDに0が含まれています。result.id私はあなたが意味するか、またはを期待しますresult.object.id

于 2012-06-29T15:41:09.550 に答える
0

右括弧の位置を間違えました:

url(r'^cribme/(?P<meekme_id>\d+)/$', 'meebapp.views.cribdetail', name='cribdetail'),

グループ構造には、一致させようとしている文字を(?P<meekme_id> .. )含める必要があることに注意してください。\d+間違った正規表現では、一致する文字を含まないグループを定義しているため、常に空の string''です。

于 2012-06-29T15:32:58.070 に答える