我想更好地理解下面的代碼。它的工作,但我不完全瞭解的幾個要素(以下問題):下面的Django代碼是如何工作的?
from django.shortcuts import render_to_response
from mywiki.wiki.models import Page
from django.http import HttpResponseRedirect
from django import forms
import markdown
class SearchForm(forms.Form):
text = forms.CharField(label='Enter search term')
def search_page(request):
if request.method =='POST':
f = SearchForm(request.POST)
if not f.is_valid():
return render_to_response('search.html', {'form':f})
else:
pages = Page.objects.filter(name__contains = f.cleaned_data['text'])
return render_to_response('search.html', {'form':f, 'pages':pages})
f = SearchForm()
return render_to_response('search.html', {'form':f})
specialPages = {'SearchPage':search_page}
def view_page(request, page_name):
if page_name in specialPages:
return specialPages[page_name](request)
try:
page = Page.objects.get(pk=page_name)
except Page.DoesNotExist:
return render_to_response('create.html', {'page_name':page_name})
content = page.content
return render_to_response('view.html', {'page_name':page_name, 'content':markdown.markdown(content)})
爲什麼我們需要指定的
request.method
必須是POST
- 不會點擊一個HTML按鈕隱表示意圖改變/影響某物?或POST
只適用於操作影響數據庫的情況嗎?行
pages = Page.objects.filter(name__contains = f.cleaned_data['text'])
如何工作?它需要模型Page(models.Model)
,但在這種情況下,「對象」和「過濾器」方法做了什麼?在
view_page
,爲什麼我們需要在return specialPages[page_name](request)
由於添加(request)
!
你應該先通過[Django教程](https://docs.djangoproject.com/zh/dev/intro/tutorial01/)。如果你有,你應該知道所有這些答案。它不需要很長時間,你甚至可以享受它。 –
https://docs.djangoproject.com/zh/dev/topics/forms/ – dm03514