0

私は次のURLを持っています:

http://localhost:8000/store/add/?points=5

URLからポイント数を抽出したい。

私のviews.py中で、私は持っています:

points = request.GET.get('points',0)

問題は、ポイントが見つからないため、デフォルトの0を使用することです。

私が間違っていることについての洞察はありますか?

私のurls.py

from django.conf.urls.defaults import *
from store.models import Part, Category, UniPart, LibraryRequest
from django.views.generic.list_detail import object_list
from voting.views import vote_on_object


urlpatterns=patterns('',
#/store/
url(r'^$','store.views.all_models',name="all_models"),
#/integer/view_part
url(r'^(\d+)/view_part/$','store.views.view_part',name="view_part"),
url(r'^your_models/$','store.views.your_models',name="your_models"),#/your_model
url(r'^user_models/(?P<username>\w+)/$','store.views.user_models',name="user_models"),
url(r'^add/(?P<points>\d+)/','store.views.add_model'),

から抜粋views.py

def add_model(request, points=None):
    print points
4

2 に答える 2

3

さて、あなたurls.pyは次のURLを使用する必要があると言っています/store/add/5、そしてあなたの中であなたviews.pyはビューを持っている必要があります

def add_model(request, points=None):
    print points

パラメータとして必要な場合は、次のように変更pointsします。GETurls.py

url(r'^add$','store.views.add_model', name='add_model'),

points次に、として渡し/store/add?points=5、URLから次のように抽出できます。

points = request.GET.get('points')

更新 また、将来、このような問題を回避するために、 (上記を参照)nameのルートにパラメーターを追加し、ビュー(例)およびテンプレート(例)で使用することをお勧めします。urls.pyreversereverse('add_model', kwargs={'points': 5}url{% url 'add_model' 5 %}

その場合、アプリケーション内のすべてのURLは、ファイル内のルートに基づいて自動的に生成されurls.pyます。

于 2012-09-20T18:03:39.093 に答える
1

次のコードを使用します。

points = request.GET.get('points')

複数の変数を渡す場合は、次の2つの方法で行うことができます。

方法1:

urls.pyで。

(r'^store/add1/?integer=(?P<category>\d+)/?string=(?P<keyword>\w+)$', 'view_function_name'),

以下を使用して、ビューで上記の値を取得できます。

def function_name(request):
    int_value = request.GET.get('integer')
    str_value = reuest.GET.get('string')

また、以下のパターンを使用することもできます。

方法2:

urls.pyで。

urlpatterns = patterns('model_name.views', 
      (r'^store/add1/(?P<integer>\d+)/(?P<string>\w+)/', 'function_name')
      )

あなたのviews.pyで

def function_name(request, integer= None, string = None):
    print integer
    print string
    #Do whatever you wish with this value

2番目の方法はあなたにとってより簡単です。

于 2012-09-20T17:05:05.987 に答える