【发布时间】:2012-09-14 14:16:17
【问题描述】:
我正在尝试更好地理解以下代码。它有效,但我只是不完全理解几个要素(以下问题):
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),但在这种情况下,'objects' 和 'filter' 方法是做什么的呢?在
view_page中,为什么要在return specialPages[page_name](request)中添加(request)
谢谢!
【问题讨论】:
-
你真的应该先通过Django Tutorial。如果你有,你应该知道所有这些答案。它不需要很长时间,您甚至可能会喜欢它。
标签: python django django-forms django-views