v
3 июля 2019 г. 16:14

Редирект с page=1 на главную

Добрый день.
Пытаюсь сделать редирект с site.ru/?page=1 на просто site.ru/ и ничего не выходит... я уж и так и сяк. Если страница не существует, то с этим нет проблем, а тут не выходит(( Помогите

2

Вам это нравится? Поделитесь в социальных сетях!

10
Evgenii Legotckoi
  • 3 июля 2019 г. 23:16

Добрый день

Вы можете попробовать в get методе попробовать обработать данную ситуацию следующим образом.

  1. def get(self, request, *args, **kawrgs)
  2. if int(self.request.GET.get('page')) == 1:
  3. return redirect(self.request.path)
    v
    • 4 июля 2019 г. 16:20
    • (ред.)

    Наверно я туп((
    Или я не вкуриваю куда и что добавлять))
    Исправил опечатки, добавил код в views, но ничего не происходит. В urls что то надо добавлять?

    1. def get(self, request, *args, **kwargs):
    2. if int(self.request.GET.get('page')) == 1:
    3. return redirect(self.request.path)

    Django 2.2.3

      Evgenii Legotckoi
      • 4 июля 2019 г. 16:21

      покажите urls и views, а также перезапустите проект, если у вас DEBUG = False

        v
        • 4 июля 2019 г. 16:37

        DEBUG = True

        1. urls.py
        2.  
        3. from django.conf import settings
        4. from django.conf.urls.static import static
        5. from django.contrib import admin
        6. from django.urls import path
        7. from .views import index
        8. from .views import save_detail
        9. #from .views import redirect_index
        10. #from .views import get
        11. from core.views import *
        12.  
        13.  
        14. urlpatterns = [
        15. path('', index, name='index'),
        16. path('save-<slug:slug>.html', save_detail, name='save_detail_url'),
        17. #path('?page=1', redirect_index),
        18. #path('page=1', get),
        19. path('admin/', admin.site.urls),
        20. ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
        1. views.py
        2.  
        3. from django.shortcuts import render
        4. from core.models import Save
        5. from django.core.paginator import Paginator
        6. from django.shortcuts import get_object_or_404
        7.  
        8.  
        9. from django.shortcuts import redirect
        10.  
        11.  
        12. def index(request):
        13. saves = Save.objects.all().order_by('-pub_date')
        14. paginator = Paginator(saves, 22)
        15.  
        16. page = request.GET.get('page', 1)
        17. saves = paginator.get_page(page)
        18. return render(request, 'index.html', context={'saves': saves})
        19.  
        20.  
        21. def save_detail(request, slug):
        22. #saves = Save.objects.get(slug__iexact=slug)
        23. saves = get_object_or_404(Save, slug__iexact=slug)
        24. return render(request, 'save.html', context={'saves': saves})
        25.  
        26.  
        27. def get(self, request, *args, **kwargs):
        28. if int(self.request.GET.get('page')) == 1:
        29. return redirect(self.request.path)
          Evgenii Legotckoi
          • 4 июля 2019 г. 16:42

          А понятно... вы вместо Class Based View (CBV) используете просто функции.

          Ну напишите так

          1. def index(request):
          2. if int(self.request.GET.get('page')) == 1:
          3. return redirect(self.request.path)
          4.  
          5. saves = Save.objects.all().order_by('-pub_date')
          6. paginator = Paginator(saves, 22)
          7.  
          8. page = request.GET.get('page', 1)
          9. saves = paginator.get_page(page)
          10. return render(request, 'index.html', context={'saves': saves})
            v
            • 4 июля 2019 г. 16:58

            NameError: name 'self' is not defined

              Evgenii Legotckoi
              • 4 июля 2019 г. 16:58
              1. def index(request):
              2. if int(request.GET.get('page')) == 1:
              3. return redirect(request.path)
              4.  
              5. saves = Save.objects.all().order_by('-pub_date')
              6. paginator = Paginator(saves, 22)
              7.  
              8. page = request.GET.get('page', 1)
              9. saves = paginator.get_page(page)
              10. return render(request, 'index.html', context={'saves': saves})
                v
                • 4 июля 2019 г. 17:01

                TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'

                  Evgenii Legotckoi
                  • 4 июля 2019 г. 17:02
                  • Ответ был помечен как решение.
                  1. def index(request):
                  2. if request.GET.get('page') and int(request.GET.get('page')) == 1:
                  3. return redirect(request.path)
                  4.  
                  5. saves = Save.objects.all().order_by('-pub_date')
                  6. paginator = Paginator(saves, 22)
                  7.  
                  8. page = request.GET.get('page', 1)
                  9. saves = paginator.get_page(page)
                  10. return render(request, 'index.html', context={'saves': saves})
                    v
                    • 4 июля 2019 г. 17:10

                    Огромное спасибо! Прям как в тех. поддержку свою проблему писал)) Даже как то не удобно было :( С зарплаты обязательно поддержу проект!

                      Комментарии

                      Только авторизованные пользователи могут публиковать комментарии.
                      Пожалуйста, авторизуйтесь или зарегистрируйтесь
                      • Последние комментарии
                      • Evgenii Legotckoi
                        16 апреля 2025 г. 17:08
                        Благодарю за отзыв. И вам желаю всяческих успехов!
                      • IscanderChe
                        12 апреля 2025 г. 17:12
                        Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
                      • AK
                        1 апреля 2025 г. 11:41
                        Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
                      • Evgenii Legotckoi
                        9 марта 2025 г. 21:02
                        К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
                      • VP
                        9 марта 2025 г. 16:14
                        Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…