diff --git a/blog/templates/blog/article_detail.html b/blog/templates/blog/article_detail.html
index 37c8537..f66916b 100644
--- a/blog/templates/blog/article_detail.html
+++ b/blog/templates/blog/article_detail.html
@@ -60,15 +60,12 @@
{% endif %}
-
-
-
![]()
@@ -76,6 +73,9 @@
+
+
+
{% endblock %}
{% block extra_js %}
@@ -90,7 +90,7 @@
img.style.cursor = 'pointer';
img.addEventListener('click', function() {
// Вызываем глобальную функцию openModal из recall.js
- openModal(this.src, this.alt || 'Изображение из статьи');
+ ImageModal.open(this.src, this.alt || 'Изображение из статьи');
});
});
});
diff --git a/programmer/admin.py b/programmer/admin.py
index 53c0cb1..004a1c6 100644
--- a/programmer/admin.py
+++ b/programmer/admin.py
@@ -68,10 +68,12 @@ class SolutionAdmin(BaseContentAdmin):
list_display = ('id', 'title', 'time_create', 'is_published')
list_display_links = ('id', 'title')
search_fields = ('title', 'description', 'implementation')
+ prepopulated_fields = {'slug': ('title',)}
+
fieldsets = (
(None, {
- 'fields': ('title', 'is_published'),
+ 'fields': ('title', 'slug', 'is_published'),
}),
('Содержание', {
'fields': ('description', 'implementation', 'closing'),
diff --git a/programmer/models.py b/programmer/models.py
index 14685de..303c1bf 100644
--- a/programmer/models.py
+++ b/programmer/models.py
@@ -69,12 +69,24 @@ class Solution(models.Model):
time_create = models.DateTimeField(auto_now_add=True, verbose_name='Дата создания')
time_update = models.DateTimeField(auto_now=True, verbose_name='Дата изменения')
is_published = models.BooleanField(default=True, verbose_name='Опубликован')
-
+ slug = models.SlugField(
+ max_length=255,
+ unique=False, # временно не уникальное
+ db_index=True,
+ verbose_name='URL-идентификатор',
+ blank=True,
+ null=True, # разрешаем NULL
+ )
def __str__(self):
return self.title
-
+
+ def save(self, *args, **kwargs):
+ if not self.slug:
+ self.slug = slugify(self.title)
+ super().save(*args, **kwargs)
+
def get_absolute_url(self):
- return reverse('solution_detail', kwargs={'pk': self.pk})
+ return reverse('solution_detail', kwargs={'slug': self.slug})
class Meta:
verbose_name = 'Проекты'
diff --git a/programmer/templates/programmer/solution.html b/programmer/templates/programmer/solution.html
index 06157f8..f5d67c6 100644
--- a/programmer/templates/programmer/solution.html
+++ b/programmer/templates/programmer/solution.html
@@ -15,27 +15,6 @@
{% include 'programmer/includes/project_cards.html' %}
-
{% if not posts %}
diff --git a/programmer/urls.py b/programmer/urls.py
index f5d2461..d89190d 100644
--- a/programmer/urls.py
+++ b/programmer/urls.py
@@ -14,7 +14,7 @@ urlpatterns = [
path('', views.HomePageView.as_view(), name='home'),
path('about/', views.AboutPageView.as_view(), name='about'),
path('solutions/', views.SolutionListView.as_view(), name='solution'),
- path('solutions/
/', SolutionDetailView.as_view(), name='solution_detail'),
+ path('solutions//', SolutionDetailView.as_view(), name='solution_detail'),
# path('competence/', ability, name='ability'),
# path('competence//', CompetenceDetailView.as_view(), name='competence_detail'),
path('recall/', views.RecallListView.as_view(), name='recall'),