Ответы пользователя по тегу Django
  • Как создавать приложения для админки?

    stympel
    @stympel
    подпивасник
    Если вы и решили сделать приложение "для админки" то создайте обычное приложение и дальше колдуйте с файлом admin.py и делайте там все, что нужно.
    Ответ написан
    Комментировать
  • При переходе на пост не могу получить данные из БД именно по этому посту, как реализовать?

    stympel
    @stympel
    подпивасник
    Вообще, используйте class based veiws, то есть вьюхи, на основе классов. Здесь я приведу пример вывода списка книг (без наследования от ListView, чтобы лучше понимать, как это работает). Предположим, эти книги будут карточками в шаблоне и у каждой карточки есть кнопка для переходя к этой книге.

    В классе модели нужно определить метод get_absolute_url. В конце ответа поймете, зачем он.

    models.py
    Посмотрите, что такое reverse в документации.
    class Book(models.Model):
        title = models.CharField(...)
        ...
    
        def get_absolute_url(self):
            return reverse("book-detail-page-url", args=[str(self.id)]


    urls.py
    Создаем урлы для списка книг и для конкретной книги с конкретным айди.
    urlpatterns = [
        path("books/", BooksListView().as_view(), name="books-page-url"),
        path("book/<id>/", BookDetailView().as_view(), name="book-detail-page-url")
    ]


    views.py
    class BookListView(View):
        def get(self, request):
            books = Book.objects.all()
            return render(request, "books.html", context={"books": books})
    
    
    class BookDetailView(View):
        def get(request, id):
            book = Book.objects.filter(id=id)
            return render(request, "book_detail.html", context={"book": book})


    books.html
    Чтобы по кнопке перейти к определенной книге, Джанга будет использовать тот самый метод get_absolute_url. Что делает этот метод вообще? Когда к нему обращаются он переносит пользователя на урл с именем "book-detail-page-url" то есть "book/id/". Этот самый айди мы передаем в этом же методе через args.
    ...
    {% for book in books %}
        {{ book.title }}
        ...
        <a href="{{ book.get_absolute_url }}" class="btn btn-primary">Подробнее</a>
        ...
    {% endfor %}


    book_detail.html
    ...
    {{ book.title }}
    ...
    Ответ написан
    Комментировать
  • Почему не выводит посты на сайт Django?

    stympel
    @stympel
    подпивасник
    У вас return с контекстом, в котором лежат посты не срабатывает, ибо перед ним еще один return.
    Ответ написан
  • Почему Django не видит приложение?

    stympel
    @stympel Автор вопроса
    подпивасник
    В INSTALLED_APPS явно указал путь до приложения и изменил 'main_app' на 'apps.main_app'
    Ответ написан
    Комментировать