00:18 Покоряем DJANGO. |
Django - фреймворк для написания веб приложенийЛучший вариант изучить и понять правила создания веб-сайтов и приложений посмотреть обучающее видео.https://www.youtube.com/watch?v=QgdINlxm-wE. Если вы пройдете все видео уроки по созданию первого простого блога, то получите по меньшей мере, исходный код сайта который можно будет изменять и корректировать на своё усмотрение. В комментариях восьмого урока есть ссылка на рабочий код автора. Кому интересно как можно этот код превратить в более совершенный блог предлагаю свои варианты. Первое с чего я начал - это лайки. В уроках при добавлении лайка нас выбрасывает на первую страницу блога при любых вариантах. В привычных нам веб страницах мы видим добавления лайка, т.е. остаемся на этой же странице. И так, как это сделать? Для начала разберем что происходит при клике на рисунок лайка: 1. при наведения курсора на лайк нам подсвечивается url куда мы сейчас перейдем 2. кликаем на лайк -через urls.py по указанному адресу переходим в views.py на указанную функцию. 3. в views.py на указанной функции выводим через returne новую страницу по url вот так первоначально выглядит код: def addlike(request, article_id): Нам необходимо после динамической обработки страницы( адрес-добавить лайк) вернуться на предыдущий адрес, ту страницу где были раньше. Код будет выглядеть так: def addlike(request, article_id): try: if article_id in request.COOKIES: return_path = request.META.get('HTTP_REFERER','/') return redirect(return_path) else: article = Article.objects.get(id=article_id) article.article_likes += 1 article.save() return_path = request.META.get('HTTP_REFERER','/') response = redirect(return_path) response.set_cookie( article_id,"test") return response except ObjectDoesNotExist: raise Http404 return redirect('/') В выше приведенном коде строка: return_path = request.META.get('HTTP_REFERER','/') означает-" переменной return_path присваиваем значение - вернуться на предыдущую страницу". И в возврате функции мы переходим по этому пути( т. е. остаемся на адресе где добавляли лайк), исключение составляет случай бланка ошибки - вэтом случае переходим на стартовую страницу блога. Следующее , что я сделал - это отобразил в комментариях кто его добавил и дату комментария. Для этого необходимо изначально в модели комментариев определить два поля:1 поле автора и 2. поле даты создания комментария. код класса комментария в модели стал выглядеть так: #!/usr/bin/env python # -*- coding: utf-8 -*- from django.db import models from django.contrib.auth.models import User # Create your models here. class Article(models.Model): class Meta(): db_table = 'article' article_title = models.CharField(max_length=200) article_text = models.TextField() article_date = models.DateField() article_likes = models.IntegerField(default=0) def __unicode__(self): return self.article_title class Comments(models.Model): class Meta(): db_table = 'comments' comments_text = models.TextField(verbose_name="Текст комментария") comments_date = models.DateField(u'date',auto_now=True) comments_article = models.ForeignKey(Article) comments_author = models.ForeignKey(User) После обновления базы данных (или создания ее ) необходимо добавить поля автора и даты в шаблон страницы.Код файла article.html
{% extends 'main.html' %} {% block article %} <h4>{{ article.article_date }}</h4> {% endfor %} </div> и добавить в views.py(article) def addcomment(request, article_id): if request.POST and ("pause" not in request.session): form = CommentForm(request.POST) if form.is_valid(): comment = form.save(commit=False) comment.comments_author = request.user # ! получить пользователя ! comment.comments_article = Article.objects.get(id=article_id) form.save() request.session.set_expiry(60) request.session['pause'] = True return redirect('/articles/get/%s/' % article_id) Теперь у нас можно будет увидеть кто и когда добавил комментарий. Следующее, что я сделал - это добавил возможность вставлять картинки и фото на страницу и установил редактор html , но это уже следующая история... |
|
Всего комментариев: 0 | |