Разработка отдельных страниц сайта
Шаблон страницы, отображающей полный список продуктов, отображает данные из списка, переданного ему функцией таким же образом, как и шаблон главной страницы. Функция отличается от show_new тем, что получает список не последних пяти элементов, а все значения таблицы сортирует их по названию: Данные, введенные в эту форму, пересылаются в функцию, которая в зависимости от них регистрирует… Читать ещё >
Разработка отдельных страниц сайта (реферат, курсовая, диплом, контрольная)
Начнем реализовывать отдельные страницы сайта.
Реализация страниц в joomla происходит с помощью шаблонов. Вначале пишется шаблон html, в котором в определенных местах находятся теги шаблона и переменные. Затем в файле views. py пишется представление — функция, загружающая данный шаблон и подставляющая значения переменных. И наконец, в файле urls. py находится словарь, содержащий ссылки и функции, соответствующие ссылкам.
Сайт будет представлен несколькими окнами, или фреймами. Вначале следует определить структуру документа, разметить страницы и определить адреса страниц. Шаблон index. html содержит описание фреймов:
Файл представлений содержит функцию, отображающую шаблон.
def mainf (request):render_to_response ('index.html').
Эта функция не делает ничего, кроме разметки страницы на фреймы. Она вызывается по адресу.
После разметки можно загрузить рисунок. Для этого не нужен специальный шаблон, текст находится в самой функции:
def my_image (request):="" «.
" «» HttpResponse (html).
Теперь загрузим меню. Меню описывает шаблон menue. html, содержащий html текст и скрипт, позволяющий управлять загрузкой страниц в главной части окна.
html>
Главная.
Поиск.
Продукт.
- игры
- музыка
- фильмы
Регистрация.
Сделать заказ.
Гостевая книга.
Функция, загружающая шаблон также ничего больше не делает.
Шаблон главной страницы содержит текст и тег, отображающий новые поступления товаров:
html lang="ru" >
Your New World.
" Digital trade" ;
Здесь ты сможешь найти любой гаджет для себя
Новые поступления
по заказам и просьбам, а также интересные для жителей «Digital Trade»Тег {% for disc in queryset %} выводит в цикле значения списка queryset.
Функция, загружающая шаблон, находится в файле views. py, относящемуся к приложению, так как работает с базой данных:
def show_new (request):=Disc.objects.all ()=len (list1)=list1[(l-5):l]render_to_response («main.html», {" queryset": list2 }).
Как видно, функция выбирает пять последних записей из списка, полученного путем запроса всех дисков. Этот путь отбора новинок наиболее приемлем, учитывая специфику сайта. Так как заранее неизвестно, как часто новые товары будут приобретаться, а также какого они года выпуска, отбор новинок по дате выпуска или по дате занесения в базу не представляется надежным.
В результате, главная страница, меню и логотип выглядят следующим образом:
5. Следующей обработаем страницу поиска. В шаблоне будет содержаться форма ввода, а также отображение результата поиска либо сообщения об ошибке:
Поиск{% if query %} Результат{% endif %}.
Поиск
Введите название диска.
Поиск:
[6]" >
{% if query %}.
Результаты для «[6]» :
{% if results %}.
{% else %}.
Диск не найден.
{% endif %}.
{% endif %}.
Как видно, после заполнения формы шаблон отображает значение запроса и результата, если он найден. Функция занимается отбором нужного значения из списка продуктов.
def search (request):
query = request.GET.get ('q', '')= (Q (name__icontains=query))= Disc.objects.filter (qset).distinct ()render_to_response («mydatabase/search.html», {.
" results": results,.
" query": query.
}).
В результате страница поиска выглядит следующим образом:
Шаблон страницы, отображающей полный список продуктов, отображает данные из списка, переданного ему функцией таким же образом, как и шаблон главной страницы. Функция отличается от show_new тем, что получает список не последних пяти элементов, а все значения таблицы сортирует их по названию:
def show_products (request):render_to_response («mydatabase/product.html», {.
" queryset": Disc.objects.all ().order_by («name»).
}).
В результате страница выглядит так:
Страницы вывода товаров по виду строятся аналогично и имеют схожий внешний вид.
Страница регистрации состоит из формы регистрации.
Регистрация.
Регистрация
Перед завершением регистрации убедитесь в правильности введенных вами данных!
Ник | |
Фамилия: | |
Имя: | |
Отчество: | |
Адрес: | |
Город: | |
Область: | |
Страна: | |
Данные, введенные в эту форму, пересылаются в функцию, которая в зависимости от них регистрирует пользователя (то есть создает запись о нем в базе данных) и сообщает ему об успешной регистрации или, если ник, предложенный пользователем, дублируется — выводит под формой предупреждение.
def register_us (request):request.method == 'POST':= request.POST.get ('N', '')(ShopUser.objects.filter (nickname=n)):
e="Этот ник уже используется в системе! Введите другой ник!" render_to_response ('register.html', {'err': e}):= request.POST.get ('N2', '')= request.POST.get ('N3', '')= request.POST.get ('N4', '')= request.POST.get ('N5', '')= request.POST.get ('N6', '')= request.POST.get ('N7', '')= request.POST.get ('N8', '')= ShopUser (nickname=n, surname=n2, name=n3, patr_name=n4, address=n5, city=n6, state_province=n7, country=n8).save ()HttpResponseRedirect ('/register/register1/'):render_to_response ('register.html') Внешний вид страницы до и после регистрации представлен на изображениях:
Страница заказа содержит правила заказа, рекомендации и форму заказа.
Функция принимает ник пользователя, его фамилию и лот диска. На каждом этапе осуществляется проверка на правильность введенных данных:
def order (request):request.method == 'POST':= request.POST.get ('N', '')=ShopUser.objects.filter (nickname=n)(q):=request.POST.get ('N2', '')(q[0]. surname==n2):= request.POST.get ('N1', '')=Disc.objects.filter (lot=n1)(q1):=datetime.date.today ()=Order (user=n, disc=n1, date=d, payd='no').save ()HttpResponseRedirect ('/order/order1/').
else:="Диска с таким номером лота не найдено!" .
return render_to_response ('order.html', {'err': e}).
else:="Неправильно введены фамилия или ник!" .
return render_to_response ('order.html', {'err': e}).
else:="Пользователь с таким ником не зарегистрирован!" .
return render_to_response ('order.html', {'err':
e}):render_to_response ('order.html').
Внешний вид страницы до и в результате заказа:
Гостевая книга.
Шаблон гостевой книги выводит пять новейших комментариев и форму для написания собственного комментария. Каждый пользователь может оставлять неограниченное количество комментариев.
Гостевая книга.
Гостевая книга
В нашей гостевой книге вы можете оставить пожелание, отзыв или интересующий вас вопрос.
Мы постараемся не оставить без внимания вашу запись.
Записи могут оставлять только зарегистрированные пользователи!
{% if queryset %}.
{% endif %}.
Добавление записи
Ник | |
Текст | |
Если форма не заполнялась, то есть функцией не был получен POST, она отображает форму и записи.
После получения POSТ функция проверяет на правильность ник, обновляет страницу, пересчитывает последние элементы списка и выводит их вместе с новой записью.
def add_wish (request):=Wish.objects.all ()=len (list1)=list1[(l-5):l]request.method == 'POST':= request.POST.get ('N', '')= request.POST.get ('N2', '')=ShopUser.objects.filter (nickname=n)(q):= request.POST.get ('N1', '')=Wish (nickname=n, wishtext=n1).save ()=Wish.objects.all ()=len (list1)=list1[(l-5):l]render_to_response («mydatabase/wishes.html», {" queryset": list2}).
else:="Пользователь с таким ником не зарегистрирован!" .
return render_to_response («mydatabase/wishes.html», {'err': e}):render_to_response («mydatabase/wishes.html», {" queryset": list2}).