Здравствуйте.
Нужна помощь в доработке кода блога.
Имеется модель блога в которую добавил поле slug
# -*- coding: utf-8 -*-
from django.db import models
from ckeditor.fields import RichTextField
class BlogPost(models.Model):
class Meta(): # Этот класс прописывается для того, чтоб в базе данных можно было индентифицировать таблицу по ее названию в данном случае это 'blog_post'
db_table = 'blog_blogpost'
ordering = ['-timestamp']
title = models.CharField(max_length=150, verbose_name = 'Заголовок')# По умолчанию это поле обязательное к заполнению blank=False. Если нам нужно оставить какое то поле пустым т.е. не обязятельным к заполнению то пишем параметр blank=True.
text_redactor = RichTextField(blank=True, verbose_name='Краткое описание')
text_redactor_full = RichTextField(blank=True, verbose_name='Полное описание')
likes = models.IntegerField(default=0, verbose_name='Лайки')
timestamp = models.DateTimeField(verbose_name = 'Дата')# Для числовых полей, если нужно оставить поле пустым - не обязательным к заполнению, то обязательно прописыть параметр blank=True, null=True
slug = models.SlugField(max_length=150, verbose_name='Транслит', blank=True)
autor = models.CharField(max_length=100, verbose_name= 'Автор', null=True, blank=True)
body = models.TextField(verbose_name = 'Описание')# По умолчанию это поле обязательное к заполнению blank=False. Если нам нужно оставить какое то поле пустым т.е. не обязятельным к заполнению то пишем параметр blank=True.
def __unicode__(self): # Для python-3 кодировка прописывается так def __str__(self):
return self.title
# Модель - Комментарии к статьям
class Comments(models.Model):
class Meta():
db_table = 'comments'
comments_text = models.TextField(verbose_name='')
comments_blogpost = models.ForeignKey(BlogPost)
В
admin.py связал slug с title
prepopulated_fields = {"slug": ("title",)}
В админке при наборе текста в поле title на русском в поле slug автоматом переводит в латиницу - все работает вроде.
Но дальше не получается изменить функцию, которая отвечает за вывод полной новости, урл и шаблон.
Код из
views.py делал тут по разному.
def full(reguest, one_id, slug):
comment_form = CommentForm
args = {}
args.update(csrf(reguest))
args['te'] = BlogPost.objects.get(id=one_id, slug=slug)
#te = get_object_or_404(BlogPost, slug=slug)
args['comments'] = Comments.objects.filter(comments_blogpost_id=one_id)
args['form'] = comment_form
args['username'] = auth.get_user(reguest).username
return render_to_response('full.html', args)
В
urls.py тут менял one_id на slug
url(r'^full/(?P<one_id>\d+)/$', views.full, name='full'),
В главном
urls.py проекта
url(r'^blog/', include('blog.urls', namespace='blog')),
В шаблоне менял te.pk на te.slug
{% for te in te %}
<div class="panel panel-success">
<div class="panel-heading">
<a href="{% url 'blog:full' te.pk %}">{{ te.title }}</a>
</div>
<div class="panel-body">
<p>{{ te.text_redactor|safe }}</p>
<a href="{% url 'blog:full' te.pk %}"><button type="button" class="btn btn-default btn-xs">Читать далее >>></button></a>
</div>
<div class="panel-footer">
<div class="row">
<div class="col-xs-6 col-md-4"><a href="/blog/addlike/{{ te.pk }}/"><img src="{% static "img/4594371.png" %}" width="30px" height="30px"></a> {{ te.likes }}</div>
<div class="col-md-4 col-md-pull-1"><!--Соц.кнопки -->
<script type="text/javascript">(function(w,doc) {
if (!w.__utlWdgt ) {
w.__utlWdgt = true;
var d = doc, s = d.createElement('script'), g = 'getElementsByTagName';
s.type = 'text/javascript'; s.charset='UTF-8'; s.async = true;
s.src = ('https:' == w.location.protocol ? 'https' : 'http') + '://w.uptolike.com/widgets/v1/uptolike.js';
var h=d[g]('body')[0];
h.appendChild(s);
}})(window,document);
</script>
<div data-background-alpha="0.0" data-buttons-color="#FFFFFF" data-counter-background-color="#ffffff" data-share-counter-size="12" data-top-button="false" data-share-counter-type="common" data-share-style="1" data-mode="share" data-like-text-enable="false" data-mobile-view="true" data-icon-color="#ffffff" data-orientation="horizontal" data-text-color="#000000" data-share-shape="round-rectangle" data-sn-ids="fb.vk.tw.ok.gp.mr.lj.ln." data-share-size="30" data-background-color="#ffffff" data-preview-mobile="false" data-mobile-sn-ids="fb.vk.tw.wh.ok.gp.mr.lj.ln." data-pid="1430623" data-counter-background-alpha="1.0" data-following-enable="false" data-exclude-show-more="false" data-selection-enable="true" class="uptolike-buttons" ></div>
</div>
<div class="col-xs-6 col-md-4"><h6>Дата публикации: {{ te.timestamp }}</h6></div>
</div>
</div>
</div>
{% endfor %}
Не могу понять, как сделать, чтоб ссылки имели четабельный вид а не так как сейчас blog/full/17/