簡體   English   中英

django:傳遞一個url作為參數

[英]django: passing a url as a parameter

我想將一個URL從javascript傳遞到django視圖。 我有以下urls.py

     --- urls.py ---
     url(r'^show/(?P<url>\.+)$', 'myapp.views.jsonProcess'),

該視圖具有以下聲明:

    --- views.py ---
    def jsonProcess(request, url):

我在javascript中傳遞的URL如下:

    url = 'http://127.0.0.1:8000/show/' + 'http://www.google.com';
    window.open(url);

匹配URL時出現“找不到頁面(404)”錯誤。 我錯過了什么? 任何,所有指針都是受歡迎的,因為我無可救葯地卡住了! :(

首先,如果您希望它表示任何符號(在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作為函數名

函數名稱應為小寫,並根據需要用下划線分隔,以提高可讀性。


另一個可能在將來有用的注意事項:不要在JavaScript中硬編碼Django URL。 您可以在視圖中動態生成它們:

from django.core.urlresolvers import reverse
url = reverse(
    'myapp.views.json_process',
    kwargs={'url': 'http://www.google.com'}
)

或者在模板中

{% url myapp.views.json_process url="http://www.google.com" %}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM