django:传递一个url作为参数

时间:2011-11-01 06:03:01

标签: javascript django django-views

我想将一个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);

匹配网址时出现“找不到页面(404)”错误。我错过了什么?任何,所有指针都是受欢迎的,因为我无可救药地卡住了! :(

1 个答案:

答案 0 :(得分:6)

首先,如果你想让它代表任何符号(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" %}