# Эти 2 роута всегда внизу! posts последний!
path('', include('front.urls')),
path('', include('posts.urls')),
domain.ru/my_link
books = Books.objects.raw(
"""SELECT id, name FROM
(
SELECT DISTINCT NULL AS id, LEFT(name, 1) AS name FROM Books
UNION ALL
SELECT DISTINCT id, name FROM Books AS Books1
ORDER BY name
) AS t1
ORDER BY name""")
for book in books:
print(book.id)
print(book.name)
urlpatterns = [
path('<int:id>/', views.MainPagesDetailView.as_view(), name='index'),
# или
path('<slug:slug>/', views.MainPagesDetailView.as_view(), name='index'),
]
http://my_domain/pk/
или
http://my_domain/slug/
parent = models.ForeignKey("self")
comments = [{
'id': 1,
'text': 'asdaasd',
'childrens': []
},
{ 'id': 2,
'text': 'asdaasd',
'childrens': [
{ 'id': 7,
'text': 'asdaasd',
'childrens': [
{ 'id': 12,
'text': 'asdaasd',
'childrens': [
{ 'id': 23,
'text': 'asdaasd',
'childrens': [],
},
... # и т.д.
],
},
... # и т.д.
],
},
{ 'id': 8,
'text': 'asdaasd',
'childrens': [],
},
... # и т.д.
],
},
{ 'id': 2,
'text': 'asdaasd',
'childrens': [
{ 'id': 15,
'text': 'asdaasd',
'childrens': [],
},
{ 'id': 19,
'text': 'asdaasd',
'childrens': [],
},
... # и т.д.
],
}
... # и т.д.
]
{%for comment in comments%}
{{ comment.id }}
{{ comment.text }}
{% if comment.childrens %}
# По идее здесь тоже надо будет организовать рекурсию, для отображения множественной вложенности
# гугли - django template recursive tree, примерно
# К вложенным комментариям вот так можно обращаться будет
{% for children in comment.childrens %}
{{ children.id }}
{{ children.text }}
{% if children.childrens %}
# и т.д.
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
django.contrib.auth.middleware
Он как раз ложит авторизованного юзера в request поэтому во всех views в request можно обратиться и получить авторизованного юзера вот так:def get_queryset(self)
user = self.request.user # тут юзер
user_id = self.request.user.id # так ИД юзера
path("<int:my_param>/profile/", ProfileUpdate.as_view(), name="profile-api-update" ),
# Только я бы последним параметр передавал, вот так
# path("/profile/<int:my_param>/", ProfileUpdate.as_view(), name="profile-api-update" ),
class ProfileUpdate(View):
def get(self, request, my_param):
print(my_param)
return render(request, self.template_name)
def post(self, request, my_param):
print(my_param)
return render(request, self.template_name)
def get_queryset(self):
my_param=self.kwargs['my_param']
my_param=self.kwargs.get('my_param') # лучше так
@admin.register(Ordering)
class OrderingAdmin(admin.ModelAdmin):
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == "system":
kwargs["queryset"] = Code.objects.filter(used=True)
return super().formfield_for_foreignkey(db_field, request, **kwargs)
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
os.path.join(BASE_DIR, 'templates'),
],
Uncaught TypeError: Cannot read property 'getContext' of null
const canvasBody = document.getElementById("canvas"),
drawArea = canvasBody.getContext("2d");
$( document ).ready(function() {
console.log( "ready DOM" );
// ваш код
});
<canvas id="canvas"></canvas>
<script src="{% static 'js/main.js' %}"></script>
</body>
</html>
from django.core.exceptions import ObjectDoesNotExist
def home(request):
if request.method == 'POST':
id = request.POST.get('id', None)
if id:
try:
post = Post.objects.get(pk=id)
except ObjectDoesNotExist:
return () # обработка ошибки пост не найден
if form.is_valid():
form = form.save(commit=False)
form.user = request.user
form.post = post
form.save()
return () # все хорошо, коммент сохранен
return () # обработка ошибки форма не валидная
return () # обработка ошибки id не передан
# else здесь не обязательно писать код выполнится только если не ПОСТ
context = {
'form': CommentForm(),
'comments': Comment.objects.filter(moderation=True)
}
return (request, 'blog/index.html', context) # return метод GET
comments = Comment.objects.all()
comments = Comment.objects.filter(moderation=True)
from django.contrib.auth import get_user_model
User = get_user_model()
from name_app.models import Post, Comment # после запятой пробел
path(' тут принять slug ', views.ProductView.as_view(), name='product_list'),]
В чем отличие между сайтом "блог" и "новостным" сайтом, в техническом плане?
Какие модули, библиотеки используются для создания сайта новостей в Django?
Какие модули, библиотеки используются для создания сайта блог в Django?
За googlи! - гуглил четкого ответа нет!
Зачем Django когда есть Wordpress - ответ: потому что Python!