0

我有以下网址:

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作为GET参数更改urls.py如下:

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

然后您可以传递pointsas/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')

如果您传递多个变量,则可以通过两种方式完成:

方法一:

在您的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')

您还可以使用下面给出的模式:

方法二:

在您的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

第二种方法对你来说会更容易。

于 2012-09-20T17:05:05.987 回答