messages.
<html>
<head>
<title>Сообщения</title>
</head>
<body>
{% for message in messages %}
<div class="author">{{ message.author }}</div>
<div class="text">{{ message.text }}</div>
{% endfor %}
</body>
</html>from django.shortcuts import render
from myapp.models import Message
def home(request):
messages = Message.objects.all()
return render(request, 'home.html', {'messages': messages})for-endfor и if-else-endif.
myboard/media/, в которой лежит файл photo.jpg).
# здесь пишется абсолютный путь до media-папки на вашей машине
MEDIA_ROOT = '/home/vpavlenko/Dropbox/work/zpsh/2013/myboard/media/'
MEDIA_URL = '/media/'
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
from django.conf import settings
urlpatterns = patterns('',
url(r'^$', 'myapp.views.home', name='home'),
url(r'^admin/', include(admin.site.urls)),
url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.MEDIA_ROOT,
}),
)
<img src="{{ MEDIA_URL }}photo.jpg">
manage.py syncdb.
Это будет полезно тогда, когда мы начнём менять схему базы данных, указанную в myapp/models.py, и
базу данных придётся создавать заново. (Существует механизм миграций с помощью South, который мы пока не рассматриваем.)
[
{
"model": "myapp.message",
"pk": 1,
"fields": {
"author": "Администратор",
"text": "Привет всем, кто нас читает."
}
},
{
"model": "myapp.message",
"pk": 2,
"fields": {
"author": "Пользователь",
"text": "А правда, что в файлах json нельзя ставить лишних запятых?"
}
}
]manage.py syncdb
Научимся показывать сообщения от конкретного пользователя.
url(r'^messages_by_author/([^/]+)/$', 'myapp.views.by_author'),
[^/]+ означает «любой символ, кроме слэша,
и так один или более раз».
def by_author(request, author_name):
messages = Message.objects.filter(author=author_name)
return render(request, 'home.html', {'messages': messages})
.all() [вернуть всё], .filter()
[вернуть найденное по запросу] и .get() [вернуть ровно один объект или умереть].
В параметрах .filter() и .get() можно проверять не только на точное равенство,
но на подстроку, на «так же начинается», на меньше/больше.
<html>
<head>
<title>{% block title %}без названия{% endblock %}</title>
<meta charset="utf8">
</head>
<body>
{% block body %}
Здесь ничего нет
{% endblock %}
</body>
</html>{% extends "base.html" %}
{% block title %}Все сообщения{% endblock %}
{% block body %}
<h2>Все сообщения в базе</h2>
{% for message in messages %}
<div class="author">{{ message.author }}</div>
<div class="text">{{ message.text }}</div>
{% endfor %}
{% endblock %}