次のコードをよりよく理解しようとしています。それは機能していますが、いくつかの要素を完全には理解していません (以下の質問):
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
HTML ボタンをクリックすることは、何かを変更/影響する意図を暗に示すのではないでしょうかPOST
? それともPOST
、アクションがデータベースに影響を与える場合にのみ適切ですか?ラインはどのように機能し
pages = Page.objects.filter(name__contains = f.cleaned_data['text'])
ますか?モデルPage(models.Model)
が必要ですが、この場合、「オブジェクト」メソッドと「フィルター」メソッドは何をしますか?で
view_page
、なぜ追加する必要がある(request)
のですかreturn specialPages[page_name](request)
ありがとう!