from django.conf import settings
from django.conf.urls.static import static
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
class PostListView(ListMixin, ListView):model = Post
ordering = '-pub_date'
paginate_by = 10
template_name = 'blog/index.html'
def get_queryset(self):
queryset = super().get_queryset().all( ).annotate(comment_count=Count("comments"))
if self.request.user.is_authenticated # Проверяем пользователь авторизованный или нет
return queryset.filter(author=self.request.user)
return queryset.filter(category__is_published=True,
is_published=True,
pub_date__lte=timezone.now())
def get_queryset(self):
queryset = super().get_queryset().all( ).annotate(comment_count=Count("comments"))
if self.request.user.is_authenticated # Проверяем пользователь авторизованный или нет
queryset = queryset.filter(author=self.request.user)
if not queryset: # либо можно так - if not len(queryset):
queryset = queryset.filter(category__is_published=True,
is_published=True,
pub_date__lte=timezone.now())
return queryset
class User(models.Model):
....
is_author = models.BooleanField(default=False)
...
...
def get_queryset(self):
queryset = super().get_queryset().all( ).annotate(comment_count=Count("comments"))
if self.request.user.is_authenticated and self.request.user.is_author:
return queryset.filter(author=self.request.user)
return queryset.filter(category__is_published=True,
is_published=True,
pub_date__lte=timezone.now())
как мне pk передать в views.py используя DetailView&
urlpatterns = [
path('', views.index, name='index'),
path('books/', views.BookListView.as_view(), name='books'),
path('book/<int:pk>/', views.BookDetailView.as_view(), ),
path('authors/', views.AuthorListView.as_view(), name='authors'),
path('author/<int:pk>/', views.AuthorDetailView.as_view(), name='author-detail')
]
from django.core.context_processors import request
def sidebar(request):
return {'context_auto': ...}
TEMPLATES = [
{ ...,
'OPTIONS': {
'context_processors': [
"context_processors.sidebar",
],
},
},
]
{% include "sidebar.html" %}
и через него выводить свой sidebar. То есть вы создаёте функцию, в которой прописываете логику и загрузку sidebar.html а на странице уже инклудите именно функцию, а не html @register.inclusion_tag('sidebar.html', takes_context=True)
def sidebar(context):
return ...
{% sidebar %}
Задался таким вопросом. В чем отличие между сайтом "блог" и "новостным" сайтом, в техническом плане?Ни чем. Это как в столярном деле, "чем отличается шкаф от тумбочки технически?", ответ "ни чем, только размерами". Что у блога, что у новостного сайта, функционал может быть идентичным. Как и блог может быть в десятки раз монструознее новостного сайта, при этом допустимо и обратное. Всё зависит от конкретных задач. Новостной сайт может быть и из одной страницы, где всего пяток новостей, меняющихся раз в месяц. Как и блог состоящий из сотней разделов и "модулей", не завязанных чисто на "текстовом" контенте.
Какие модули, библиотеки используются для создания сайта новостей в Django?Если вас интересуют "модули и библиотеки", то это нужно смотреть в сторону готовых ЦМС. Джанго это всётаки фреймворк, где подразумевается собственноручное написание с использованием функционала фреймворка, а не использование сторонних "модулей и библиотек".
Какие модули, библиотеки используются для создания сайта блог в Django?
За googlи! - гуглил четкого ответа нет!Если у вас "академический" интерес к Джанге, то советую на ближайшие пол года забыть о таких вещах как "готовые модули и библиотеки". Ладно там Pillow для работой с картинками или requests для работы с запросами к другим сервисам. Но вот функционал "блога"/"новостей", это всё делается инструментами джанги. Авторизация, админка, контент, поиск и так далее.
Зачем Django когда есть Wordpress - ответ: потому что Python!
Если не корректно задан вопрос - буду рад если кто то поправит, но суть вопроса думаю все равно понятна.
исторически сложилось что Python изучается как основной язык программирования, да и задача не состоит в быстром запуске проекта, основной упор нацелен на его качестве, к слову "WStanley", а что касается удобства на Django, уже появился Wagtail CMSОтвет выше, для изучения питона и его фреймворка Джанго, не нужны вам готовые цмс, библиотеки и модули. Изучите внимательно фреймворк, он всё реализует своим функционалом.
import datetime
date = datetime.datetime.today()
week = date.strftime("%V")
Entry.objects.filter(pub_date__week=week)
from django.utils.timezone import now
year, week, _ = now().isocalendar()
Entry.objects.filter(pub_date__iso_year=year, pub_date__week=week)
В админке, если выбрать созданный тэг через shell, то в шаблоне он отображается как main.Tag.None. (main - название приложения) Как это исправить?
{{ post.tag.all }}
{% for tg in post.tag.all %}{{ tg.title }}{% endfor %}
1. def page(request, key):
2. if key == 1:
3. a = 0
4. b = 50
5. data = table.objects.order_by("place")[a:b]
def page(request, key):
a = 0
b = 10
if key == 1:
a = 0
b = 50
data = table.objects.order_by("place")[a:b]
def page(request, key):
if key == 1:
a = 0
b = 50
else:
a = 0
b = 10
data = table.objects.order_by("place")[a:b]
maniacus26, самое просто решение, создавать запрос с страницы обращения. Напр:
obrashcenije/2 - страница с информацией об обращении
obrashcenije/2/dodat_zapros - страница с созданием запроса к конкретному обращению.
Тогда во вьюхе создания запроса, буде доступен парметр self.kwagrs['obr_id'], если урлу задать как-то так:
class ZaprosCreator(CreateView):
form_class = ZaprosForm
def get_initial(self):
return {'obrashcenije': self.kwagrs['obr_id']}
form = ZaprosForm(initial={'obrashcenije': self.kwagrs['obr_id']})
class ZaprosForm(forms.ModelForm):
...
def __init__(self, *args, **kwargs):
super(ZaprosForm, self).__init__(*args, **kwargs)
self.obrashcenije = kwargs.get('initial').get('obrashcenije', None)
class ZaprosForm(forms.ModelForm):
class Meta:
model = ZaprosModel
exclude = ('obrashcenije',)
class ZaprosView(CreateView):
form_class = ZaprosForm
def form_valid(self, form):
obj = form.save(commit=False)
obj.obrashcenije_id = self.kwagrs['obr_id']
obj.save()
return super(ZaprosView, self).form_valid(form)
from datetime import datetime
chday = datetime.strptime('datetime.date(2018, 12, 31)', 'datetime.date(%Y, %m, %d)')
today = datetime.today()
print(today < chday)
print(today > chday)
print(today == chday)
type(chday)
True
False
False
<class 'datetime.datetime'>
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(BASE_DIR, "static")
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "dev_static"),
)
form = NoteForm(request.POST, request.FILES)
<form method="POST" enctype="multipart/form-data">