2012-09-20 41 views
0

在URL中傳遞價值觀,我有以下網址:妥善儲存在Django

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 
+0

你可以發佈你的urls.py嗎? – thikonom

回答

3

那麼,你的urls.py說,你應該使用下面的網址/store/add/5,並在views.py你需要有鑑於

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

如果你想pointsGET參數更改urls.py如下:

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

然後你可以通過points作爲/store/add?points=5並從URL中提取它作爲

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

UPDATE 此外,在未來避免這樣的問題,我建議你在urls.pyname參數添加到您的路線(見上文),並使用你的意見reverse(前。 reverse('add_model', kwargs={'points': 5})和url在您的模板(前。{% url 'add_model' 5 %}

在您的應用程序的所有網址將自動根據您urls.py文件的途徑產生的情況下。

+0

通過添加建議進行編輯。 –

1

使用下面的代碼:

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

如果您傳遞多個變量它可以在兩個來完成方式:

方法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 

第二種方法會更容易讓你。

+0

謝謝。我實際上最終會傳遞約3.有沒有辦法做到這一點,而不修改urls.py?我的方法完全錯誤嗎? – user1328021

+0

如果你不想修改你的urls.py,你可以使用method1。但是使用method2會更容易。 – arulmr

+0

問題是我的url.py中的修改導致頁面未找到404錯誤。我在'urls.py'中有'url(r'^ add /(?P \ d +)','store.views.add_model',name =「add_model」)。當我剛剛「添加」時,那很好。 – user1328021