我有以下网址:
http://localhost:8000/store/add/?points=5
我想从我的网址中提取点数。
在我的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 :(得分:3)
好吧,您的urls.py
表示您应该使用以下网址/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'),
然后您可以将points
作为/store/add?points=5
传递并从网址中提取
points = request.GET.get('points')
<强>更新强>
此外,为避免出现此类问题,我建议您在name
(见上文)的路线中添加urls.py
参数,并在视图中使用reverse
(例如reverse('add_model', kwargs={'points': 5}
)和模板中的url
(例如{% url 'add_model' 5 %}
)
在这种情况下,应用程序中的所有网址都会根据urls.py
文件中的路由自动生成。
答案 1 :(得分: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
第二种方法对你来说更容易。