django cheBit'11

Post on 16-Jul-2015

902 views 0 download

Transcript of django cheBit'11

фреймворк, который позволяет экономить время на веб-разработку

и превращает разработку вэб-приложений в удовольствие

ИСАЕВ ИГОРЬ

1 Что такое  django? 

2 Устройство и возможности 

Django Django (Джанго) — свободный фреймворк для веб­приложений на языке Python.

Последняя версия1.3 (23 марта 2011)

ЛицензияBSD

Разработчики●  Адриан Головатый●  Саймон Виллисон●  Джекоб Каплан­Мосс

­ 1 ­

Кто использует?

­ 2 ­

История

­ 3 ­

2003: Kansas, USA 2005: BSD & v0.90 2008: v1.0 2011: v1.3 

­ 4 ­

Основные принципы

●  don't repeat yourself●  слабая зависимость и гибкость●  быстрая разработка

­ 5 ­

Документация

●  Официальная документация ●  Множество книг●  Сообщество●  softwaremaniacs.org

­ 6 ­

Python

●  Читаемость и лаконичность ●  Мультипарадигменный язык●  Стандартная библиотека

­ 7 ­

Python

TIOBE Programming Community Index

ПроизводительностьDjango

­ 8 ­

С  производительностью у

django все хорошо

Устройство 

­ 9 ­

ModelTemplateViewURL

Модель 

­ 10 ­

Уровень доступа к данным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)

Модель 

­ 11 ­

Уровень доступа к данным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)

Шаблон 

­ 12 ­

Уровень презентационной логики

{% extends "base.html" %} {# загрузить родительский шаблон #}

{% block content %} {# заполнить содержимое блока #}

<table>

{% for item in items %}<tr class="{% cycle odd,even %}"><td>{{ item.name }}</td> <td>{{ item.price }}</td> </tr> 

{% endfor %}

</table>

{% endblock %}

Представление Уровень бизнес логики

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})

Диспетчер URL

­ 14 ­

urlpatters = patterns(‘’,(’^my/favorite/color/$’, ‘blog.views.my_fav_color’),

(‘^post/new/$’, ‘blog.views.new_post’),

(‘^posts/(d{4})/$’, ‘blog.views.year_archive’), (‘^posts/(d{4})/(d{2})/$’, ‘blog.views.month_archive’),(‘^posts/(?P<slug>[a­z­]*)/$’, ‘blog.views.show_post’), 

)

Возможности 

­ 15 ­

●  Встроенный веб­сервер●  Встроенный интерфейс администратора●  Библиотека создания форм●  Система кэширования●  Интернационализация ●  Подключаемая архитектура приложений●  Авторизация и аутентификация

Встроенныйвеб­сервер

­ 16 ­

python manage.py runserver

Админка 

­ 17 ­

Админка 

­ 18 ­

Библиотека создания форм

­ 19 ­

# Создание формыclass ContactForm(forms.Form):

subject = forms.CharField(max_length=100)message = forms.CharField()sender = forms.EmailField()cc_myself = forms.BooleanField(required=False)

Django сделает за нас:●  Нарисует форму целиком или отдельное поле●  Произведет проверку введенных данных 

Библиотека создания форм

­ 20 ­

# Создание формы из моделиPostForm(forms.ModelForm): 

class Meta: model = Post

Django сделает за нас:●  Нарисует форму на основе модели●  Произведет проверку введенных данных ●  Сохранит полученные данные в таблицу

Системакэширования 

­ 21 ­

Что можно кэшировать?●  весь сайт●  конкретную страницу●  участок шаблона

Типы хранилищ:●  memcached●  база данных●  файловая система●  локальная память

i18n

­ 22 ­

1 Вставить переводимые строки2 Выполнить перевод

Подключаемая архитектура приложений 

­ 23 ­

Не надо изобретать велосипед!

Авторизация и аутентификация 

­ 24 ­

Недостатки 

­ 25 ­

1 Логотип

ВОПРОСЫ:

СПАСИБОЗА

ВНИМАНИЕ