•

•
•
•
•
•

•
•
•
•
•
•
from django import forms
class ContactForm(forms.Form):
email = forms.EmailField(label=u'Ваш e-mail',
max_length=100)
message = forms.CharField(label=u'Сообщение',
widget=forms.Textarea)
>>> f = ContactForm()
>>> data = {'email': 'foo@example.com', 'message': 'Hi there’}
>>> f = ContactForm(data)
>>> f.is_valid()
True
>>> f.cleaned_data
{'email': u'foo@example.com', 'message': u'Hi there’}
>>> f = ContactForm({})
>>> f.is_valid()
False
>>> f.errors
{'email': [u'Enter a valid e-mail address.'], 'message': [u'This
field is required.']}
>>> f = ContactForm()
>>> print f.as_table()
<tr><th><label for="id_for_email">Ваш email:</label></th><td><input id="id_for_ email " type="text"
name="email" maxlength="100" /></td></tr>…
from blog.forms import ContactForm
from django.core.mail import send_mail
from django.http import HttpResponseRedirect
def contact(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
subject = u'Сообщение с блога'
message = form.cleaned_data['message']
sender = form.cleaned_data['email']
recipients = ['a.bekbulatov@corp.mail.ru']
send_mail(subject, message, sender, recipients)
return HttpResponseRedirect('/')
else:
form = ContactForm()
return render(request, 'blog/contact.html', {
'form': form
})
{% extends "base.html" %}
{% block content %}
<form action="" method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Отправить" />
</form>
{% endblock %}
from django import forms
class PostForm(forms.ModelForm):
class Meta:
model = Article
fields = ('title', 'content', 'category')
•
•
•
•
•
from django import template
from blog.models import Post
register = template.Library()

@register.inclusion_tag('blog/tags/last_posts.html')
def last_posts():
return {'post_list': Post.objects.all()[:5]}
<ul>
{% for object in post_list %}
<li><a href="{{ object.get_absolute_url}}">{{
object }}</a></li>
{% endfor %}
</ul>

{% load blog_tags %}
{% last_posts %}
•
•
•
•
•
•
•
•

•
•
•
def post_detail(request, pk):
try:
object = Post.objects.get(pk=pk)
except Post.DoesNotExist:
raise Http404
return render(
request, 'blog/post_detail.html',
{'object': object}
)

urlpatterns = patterns('',
url(r'^post/(?P<pk>d+)/$', post_detail,
name='post_detail'),
)
class PostDetail(generic.DetailView):
model=Post

urlpatterns = patterns('',
url(r'^post/(?P<pk>d+)/$', PostDetail.as_view(),
name='post_detail'),
)
def post_list(request):
paginator = Paginator(Post.objects.all(), 25)
page = request.GET.get('page')
try:
posts = paginator.page(page)
except PageNotAnInteger:
posts = paginator.page(1)
except EmptyPage:
posts = paginator.page(paginator.num_pages)
return render(
request, 'blog/post_list.html',
{'object_list': posts}
)
class PostList(generic.ListView):
model = Post
paginate_by = 25
@login_required
def category(request, pk):
cat = get_object_or_404(Category, pk=pk)
post_list = Post.objects.filter(category=cat)
return render(request, 'blog/category.html', {
'category': cat,
'post_list' : post_list
})
class CategoryListView(generic.ListView):
template_name = 'blog/category.html'
def get_queryset(self):
self.cat = get_object_or_404(Category, pk=self.kwargs['pk'])
return Post.objects.filter(category=self.cat)
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super(CategoryListView, self).dispatch(*args,
**kwargs)
def get_context_data(self, **kwargs):
context = super(CategoryListView,
self).get_context_data(**kwargs)
context['category'] = self.cat
return context
from django.conf.urls import patterns, include, url
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
…
# Uncomment the next line to enable the admin:
url(r'^admin/', include(admin.site.urls)),
)
from blog.models import Category, Post
from django.contrib import admin

class PostAdmin(admin.ModelAdmin):
date_hierarchy = 'creation_date'
list_display = ('title', 'category')
list_filter = ('category',)
search_fields = ('title',)

admin.site.register(Category)
admin.site.register(Post, PostAdmin)
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•

•
•
•
•

•
•
•
•
Web весна 2013 лекция 7

Web весна 2013 лекция 7

  • 2.
  • 3.
  • 5.
    from django importforms class ContactForm(forms.Form): email = forms.EmailField(label=u'Ваш e-mail', max_length=100) message = forms.CharField(label=u'Сообщение', widget=forms.Textarea)
  • 7.
    >>> f =ContactForm() >>> data = {'email': 'foo@example.com', 'message': 'Hi there’} >>> f = ContactForm(data) >>> f.is_valid() True >>> f.cleaned_data {'email': u'foo@example.com', 'message': u'Hi there’} >>> f = ContactForm({}) >>> f.is_valid() False >>> f.errors {'email': [u'Enter a valid e-mail address.'], 'message': [u'This field is required.']} >>> f = ContactForm() >>> print f.as_table() <tr><th><label for="id_for_email">Ваш email:</label></th><td><input id="id_for_ email " type="text" name="email" maxlength="100" /></td></tr>…
  • 8.
    from blog.forms importContactForm from django.core.mail import send_mail from django.http import HttpResponseRedirect def contact(request): if request.method == 'POST': form = ContactForm(request.POST) if form.is_valid(): subject = u'Сообщение с блога' message = form.cleaned_data['message'] sender = form.cleaned_data['email'] recipients = ['a.bekbulatov@corp.mail.ru'] send_mail(subject, message, sender, recipients) return HttpResponseRedirect('/') else: form = ContactForm() return render(request, 'blog/contact.html', { 'form': form })
  • 9.
    {% extends "base.html"%} {% block content %} <form action="" method="post"> {% csrf_token %} {{ form.as_p }} <input type="submit" value="Отправить" /> </form> {% endblock %}
  • 10.
    from django importforms class PostForm(forms.ModelForm): class Meta: model = Article fields = ('title', 'content', 'category')
  • 12.
  • 13.
    from django importtemplate from blog.models import Post register = template.Library() @register.inclusion_tag('blog/tags/last_posts.html') def last_posts(): return {'post_list': Post.objects.all()[:5]}
  • 14.
    <ul> {% for objectin post_list %} <li><a href="{{ object.get_absolute_url}}">{{ object }}</a></li> {% endfor %} </ul> {% load blog_tags %} {% last_posts %}
  • 15.
  • 16.
    def post_detail(request, pk): try: object= Post.objects.get(pk=pk) except Post.DoesNotExist: raise Http404 return render( request, 'blog/post_detail.html', {'object': object} ) urlpatterns = patterns('', url(r'^post/(?P<pk>d+)/$', post_detail, name='post_detail'), )
  • 17.
    class PostDetail(generic.DetailView): model=Post urlpatterns =patterns('', url(r'^post/(?P<pk>d+)/$', PostDetail.as_view(), name='post_detail'), )
  • 18.
    def post_list(request): paginator =Paginator(Post.objects.all(), 25) page = request.GET.get('page') try: posts = paginator.page(page) except PageNotAnInteger: posts = paginator.page(1) except EmptyPage: posts = paginator.page(paginator.num_pages) return render( request, 'blog/post_list.html', {'object_list': posts} )
  • 19.
  • 20.
    @login_required def category(request, pk): cat= get_object_or_404(Category, pk=pk) post_list = Post.objects.filter(category=cat) return render(request, 'blog/category.html', { 'category': cat, 'post_list' : post_list })
  • 21.
    class CategoryListView(generic.ListView): template_name ='blog/category.html' def get_queryset(self): self.cat = get_object_or_404(Category, pk=self.kwargs['pk']) return Post.objects.filter(category=self.cat) @method_decorator(login_required) def dispatch(self, *args, **kwargs): return super(CategoryListView, self).dispatch(*args, **kwargs) def get_context_data(self, **kwargs): context = super(CategoryListView, self).get_context_data(**kwargs) context['category'] = self.cat return context
  • 23.
    from django.conf.urls importpatterns, include, url # Uncomment the next two lines to enable the admin: from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', … # Uncomment the next line to enable the admin: url(r'^admin/', include(admin.site.urls)), )
  • 24.
    from blog.models importCategory, Post from django.contrib import admin class PostAdmin(admin.ModelAdmin): date_hierarchy = 'creation_date' list_display = ('title', 'category') list_filter = ('category',) search_fields = ('title',) admin.site.register(Category) admin.site.register(Post, PostAdmin)
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.