我想寫一些優雅的地方,我不依賴於我的代碼中的請求對象。所有的例子都使用: (r'^ hello /(?p。*)$','foobar.views.hello') ,但它似乎並不像你可以很容易地發佈到一個URL形成。有沒有辦法讓這個URL迴應.... /你好?name = smith有沒有辦法在urls.py中用django捕獲URL參數?
1
A
回答
3
絕對。如果你的URL映射到一個功能,在這種情況下foobar.views.hello
,則該功能可能是這樣的一個GET請求:
def hello(request):
if request.method == "GET":
name_detail = request.GET.get("name", None)
if name_detail:
# got details
else:
# error handling if required.
數據的編碼形式,即POST參數,如果是從request.POST
您HTTP POST 。
如果您想在POST請求上查詢參數,也可以自己構造這些參數。只是這樣做:
PARAMS = dict()
raw_qs = request.META.get('QUERY_STRING', '') # this will be the raw query string
if raw_qs:
for line in raw_qs.split("&"):
key,arg = line.split("=")
PARAMS[key] = arg
27:11非POST請求的形式編碼的參數,這樣做:
FORM_PARAMS = QueryDict(request.raw_post_data)
但是,如果你想使用形式Django的,你一定要看看在django.forms。整個表格庫通常會讓你的生活更輕鬆;我從來沒有用Django手工編寫html表單,因爲Django的這一部分將所有工作都從中解放出來。作爲一個快速的總結,你這樣做:
forms.py:
class FooForm(forms.Form):
name = fields.CharField(max_length=200)
# other properties
,甚至這樣的:
class FooForm(forms.ModelForm):
class Meta:
model = model_name
然後在你的要求,你可以通過一個形式出來的模板:
def pagewithforminit(request):
myform = FooForm()
return render_to_response('sometemplate.html', {'nameintemplate': myform},
context_instance=RequestContext(request))
而在接收它的視圖中:
def pagepostingto(request):
myform = FooForm(request.POST)
if myform.is_valid(): # check the fields for you:
# do something with results. if a model form, this:
myform.save()
# creates a model for you.
另請參見model forms。總之,我強烈建議django.forms。
0
您無法在URL模式中捕獲GET參數。正如你可以看到django.core.handlers.base.BaseHandler.get_response
,只有在request.path_info
結束的URL的一部分是用來解決一個URL:
callback, callback_args, callback_kwargs = resolver.resolve(
request.path_info)
request.path_info
不包含GET參數。爲了處理這些,請參閱Ninefingers的回答。
相關問題
- 1. R:有沒有辦法捕獲所有的函數參數值
- 2. 有沒有辦法在django python中捕獲500個錯誤?
- 3. django manage.py - 有沒有辦法從環境中獲取--settings參數?
- 4. 有沒有辦法在Three20中用查詢參數註冊url?
- 5. 有沒有辦法在ActionLink中考慮MapRoute中的URL參數?
- 6. Jade模板django - 在urls.py中使用捕獲的url值
- 7. 有沒有辦法放棄空捕獲?
- 8. 有沒有辦法在PHP匿名函數中捕獲$ this?
- 9. 從django視圖中的url捕獲對象ID不在urls.py中?
- 10. 在JS中沒有參數的捕獲
- 11. 有沒有辦法使用URL查詢參數和jquery animatedcollapse.js?
- 12. 有沒有辦法從make調用中獲取-j參數?
- 13. 有沒有辦法在可調用方法中使用參數?
- 14. 鐵軌 - 有沒有辦法捕捉整個POST的參數?
- 15. 有沒有辦法在wkhtmltopdf中調試或捕獲javascript錯誤?
- 16. 有沒有辦法嘗試在C#中捕獲靜態屬性?
- 17. 有沒有辦法在GWT中捕獲鍵盤事件?
- 18. 有沒有辦法在firebase URL獲取數據的大小?
- 19. 如何在Django的urls.py中使用一個RegEx捕獲多個參數?
- 20. 有沒有辦法將參數傳遞給m.me/username URL?
- 21. 有沒有辦法在PHP中獲取啓動頁面的URL
- 22. 有沒有辦法從XMLHttpRequest響應中獲取參數?
- 23. 有沒有辦法用WebAPI生成Url?
- 24. 有沒有辦法省略掉參數?
- 25. 有沒有辦法在RDLC報告中顯示用戶參數
- 26. 有沒有辦法在SQL Server光標中使用參數?
- 27. 有沒有辦法如何在Azure Runbook中使用[switch]參數
- 28. 有沒有辦法通過引用來阻止lambda捕獲
- 29. 我有沒有辦法在後臺捕獲KEYCODE_BRIGHTNESS_DOWN事件?
- 30. 有沒有辦法獲得函數參數的類型?