12. Модель
Уровень доступа к данным
ORM django:
# Создание таблицы
class Post(models.Model):
author = models.ForeignKey(Author)
title = models.CharField(max_length=200)
slug = models.SlugField(max_length=200)
body = models.TextField()
pub_date = models.DateTimeField(auto_now_add=True)
is_active = models.BooleanField(default=True)
10
13. Модель
Уровень доступа к данным
ORM django:
# Получение данных
posts = Post.objects.all()[:5]
posts = Post.objects.filter(post_type=‘rant’)
posts = Post.objects.filter(author__name=‘Rob’)
posts = Post.objects.filter(author__name=‘Rob’).order_by(‘type’)
post = Post.objects.get(id=24)
11
15. Представление
Уровень бизнес логики
def posts_by_type(request, type):
# Показать сообщения конкретного типа
posts = Post.objects.filter(type=type)
return render_to_response( ‘postsbytype.html’, {‘posts’: posts})
def new_post(request):
# Добавить новое сообщение
if request.method == ‘POST’:
form = PostForm(request.POST)
if form.is_valid():
form.save()
else:
form = PostForm()
return render_to_response( ‘mytemplate.html’, {‘form’: form})
21. Библиотека
создания форм
# Создание формы
class ContactForm(forms.Form):
subject = forms.CharField(max_length=100)
message = forms.CharField()
sender = forms.EmailField()
cc_myself = forms.BooleanField(required=False)
Django сделает за нас:
●
Нарисует форму целиком или отдельное поле
●
Произведет проверку введенных данных
19
22. Библиотека
создания форм
# Создание формы из модели
PostForm(forms.ModelForm):
class Meta:
model = Post
Django сделает за нас:
●
Нарисует форму на основе модели
●
Произведет проверку введенных данных
●
Сохранит полученные данные в таблицу
20
23. Система
кэширования
Что можно кэшировать?
●
весь сайт
●
конкретную страницу
●
участок шаблона
Типы хранилищ:
●
memcached
●
база данных
●
файловая система
●
локальная память
21