django:将 url 作为参数传递
Posted
技术标签:
【中文标题】django:将 url 作为参数传递【英文标题】:django: passing a url as a parameter 【发布时间】:2011-12-19 06:22:13 【问题描述】:我想将一个 URL 从 javascript 传递到 django 视图。我有以下 urls.py
--- urls.py ---
url(r'^show/(?P<url>\.+)$', 'myapp.views.jsonProcess'),
视图具有以下声明:
--- views.py ---
def jsonProcess(request, url):
我在javascript中传入的网址如下:
url = 'http://127.0.0.1:8000/show/' + 'http://www.google.com';
window.open(url);
我在匹配 URL 时收到“找不到页面 (404)”错误。我错过了什么?任何和所有的指针都是受欢迎的,因为我绝望地卡住了! :(
【问题讨论】:
【参考方案1】:首先,如果您希望点表示任何符号(在urls.py
中),则不需要转义点。
url(r'^show/(?P<url>.+)$', 'myapp.views.json_process')
其次,使用encodeURIComponent
正确转义参数。
var url = 'http://127.0.0.1:8000/show/' +
encodeURIComponent('http://www.google.com')
顺便说一句,不要在 Python 中使用mixedCase for function names:
函数名称应为小写,单词之间用 为提高可读性所必需的下划线。
另一个可能在未来有所帮助的注意事项:不要在 JavaScript 中对 Django URL 进行硬编码。您可以动态生成它们in your views:
from django.core.urlresolvers import reverse
url = reverse(
'myapp.views.json_process',
kwargs='url': 'http://www.google.com'
)
或in templates:
% url myapp.views.json_process url="http://www.google.com" %
【讨论】:
成功了!我正在逃避那个点。谢谢! :) 我会记住命名约定...我对 python 比较陌生! 如果我想传递一个 javascript 参数怎么办? ` var query = document.getElementById("search").value; url_page = url + "% url 'city_view' query=query%";`以上是关于django:将 url 作为参数传递的主要内容,如果未能解决你的问题,请参考以下文章