CPanel Slug в Django
Я новичок в размещении сообщений в Stackoverflow. Прошу прощения, если мой английский не оченьИспользую CPanel для размещения своего сайта, но когда я пытаюсь развернуть свой сайт, маршрут к Технопарку и маршрут с форматом год/месяц/слог не работают должным образом, из-за чего открываемая страница не соответствует ожидаемой. Здесь я прилагаю свой скрипт home/desajono/webdesajono/desajono/views.py :
А вот результат, если приложение запущено в локальной сети : 127.0.0.1/technopark: [введите здесь описание изображения][1] 127.0.0.1/2021/08/pentingnya-olahraga-untuk-menurunkan-risiko-kepara : [введите описание изображения здесь][2] Но если приложение запущено на хостинге, то результат выглядит как на этих картинках: https://desajono.com/technopark : [страница Технопарка][3] https://desajono.com/2021/08/pentingnya-olahraga-untuk-menurunkan-risiko-kepara : [Slug Page][4]
[1]: https://i.stack.imgur.com/CNq0f.png.
[2]: https://i.stack.imgur.com/ulGx3.png.
[3]: https://i.stack.imgur.com/wfRAu.jpg
[4]: https://i.stack.imgur.com/JvwIy.jpg
Вот некоторые из моих важных кодов, которые, возможно, вы можете использовать, чтобы сделать предложение :
from django.contrib import admin
from django.urls import path, include
admin.autodiscover()
from django.conf import settings
from django.conf.urls.static import static
from django.conf.urls import include, url
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('desajono.urls')),
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
print("Ini URL di mysite : {}".format(urlpatterns))
home/desajono/webdesajono/desajono/urls.py :
from django.urls import path
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'', views.index, name='index'),
url(r'^<int:year>/<int:month>/<slug:slug>/', views.see_article, name='article-detail'),
url(r'^technopark/', views.open_technopark, name='technopark'),
]
print('Ini URL di directory desajono : {}'.format(urlpatterns))
home/desajono/webdesajono/mysite/setting.py :
home/desajono/webdesajono/desajono/views.py :
from django.http import HttpResponse
from django.shortcuts import render
from django.template import loader
from .models import Content
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.shortcuts import render, get_object_or_404
from .forms import CommentForm
# Create your views here.
def index(request):
content_list = Content.objects.order_by('-publication_date')
content_in_carousel = content_list[:2]
page = request.GET.get('page', 1)
news = content_list.filter(status=1)
information = content_list.filter(status=2)
list_potensi = content_list.filter(status=3)
paginator = [Paginator(news, 4), Paginator(information,4)]
try:
news_content = paginator[0].page(page)
information_content = paginator[1].page(page)
except PageNotAnInteger:
news_content = paginator[0].page(1)
information_content = paginator[1].page(1)
except EmptyPage:
news_content = paginator[0].page(paginator[0].num_pages)
information_content = paginator[1].page(paginator[1].num_pages)
template = loader.get_template('index.html')
context = {
'news_content' : news_content,
'information_content' : information_content,
'content_in_carousel' : content_in_carousel,
'potensi' : list_potensi
}
return HttpResponse(template.render(context, request))
def see_article(request, slug, year, month):
content = Content.objects.filter(publication_date__year=year, publication_date__month = month).get(slug=slug)
another_content_list = Content.objects.exclude(publication_date__year=year, publication_date__month = month, slug=slug).filter(status=content.status).order_by('-publication_date')[:3]
template = loader.get_template('content.html')
#Komentar
post = get_object_or_404(Content, slug=slug)
comments = post.comments.filter(active=True)
new_comment = None
# Comment posted
if request.method == 'POST':
comment_form = CommentForm(data=request.POST)
if comment_form.is_valid():
# Create Comment object but don't save to database yet
new_comment = comment_form.save(commit=False)
# Assign the current post to the comment
new_comment.post = post
# Save the comment to the database
new_comment.save()
else:
comment_form = CommentForm()
context = {
'content' : content,
'another_content' : another_content_list,
'post': post,
'comments': comments,
'new_comment': new_comment,
'comment_form': comment_form
}
return HttpResponse(template.render(context, request))
#return HttpResponse(another_content_list)
def open_technopark(request):
content = Content.objects.all()
template = loader.get_template('technopark.html')
context = {
'content' : content,
}
return HttpResponse(template.render(context, request))
home/desajono/webdesajono/desajono/models.py :
from django.db import models
import re
from django.contrib.auth import settings
from django.contrib.auth.models import User
from django.utils import timezone
from django.utils.text import slugify
from django.dispatch import receiver
from django.db.models.signals import pre_save
from mysite.utils import unique_slug_generator
from django.urls import reverse
from django import forms
from django.contrib import admin
from datetime import datetime
# Create your models here.
class Content(models.Model):
title = models.CharField(max_length=200)
img = models.ImageField(upload_to='upload/', max_length=100)
full_text = models.TextField()
publication_date = models.DateTimeField(default=timezone.now)
news = 1
information = 2
potensi = 3
status_choices = (
(news, 'News'),
(information, 'Information'),
(potensi, 'Potensi')
)
status = models.IntegerField(
choices=status_choices,
default=news,
)
author = models.ForeignKey(User, related_name='entries', on_delete=models.CASCADE, default=1)
slug = models.SlugField(unique=True, default='', editable=False)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('article-detail', kwargs={'year': self.publication_date.year, 'month' : str(self.publication_date.month).zfill(2), 'slug' : self.slug})
@property
def get_year(self):
return self.publication_date.year
@property
def get_month(self):
return self.publication_date.month
@property
def get_publication_date(self):
return self.publication_date.strftime("%B %d, %Y %H:%M:%S")
@receiver(pre_save, sender=Content)
def pre_save_receiver(sender, instance, *args, **kwargs):
if not instance.slug:
instance.slug = unique_slug_generator(instance)
class Comment(models.Model):
post = models.ForeignKey(Content,on_delete=models.CASCADE,related_name='comments')
name = models.CharField(max_length=80)
email = models.EmailField()
body = models.TextField()
created_on = models.DateTimeField(auto_now_add=True)
active = models.BooleanField(default=False)
class Meta:
ordering = ['created_on']
def __str__(self):
return 'Comment {} by {}'.format(self.body, self.name)
Все шаблоны размещаются в каталоге 'home/desajono/webdesajono/desajono/templates', который содержит index.html, technopark.html и content.html.
Есть ли что-то, что я должен исправить, чтобы slug и страница технопарка работали правильно? Спасибо за помощь.