다음 코드를 더 잘 이해하려고합니다. 그것은 작업,하지만 난 그냥 완전히 여러 요소 (아래 질문에) 이해가 안 :다음 장고 코드는 어떻게 작동합니까?
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 Tutorial] (https://docs.djangoproject.com/en/dev/intro/tutorial01/)을 먼저 수행해야합니다. 가지고 있다면,이 모든 답을 알아야합니다. 그것은 오래 걸리지 않으며 당신도 그것을 즐길 수 있습니다. –
https://docs.djangoproject.com/en/dev/topics/forms/ – dm03514