Создание функции поиска для профилей в моем приложении блога на основе Django - PullRequest
1 голос
/ 05 мая 2020

Я хочу расширить свое приложение для блога django, создав форму поиска для профилей на основе моделей пользователей. В настоящее время доступ к любой странице профиля осуществляется только текущим вошедшим в систему пользователем с простым базовым URL-адресом, соответствующим следующему шаблону URL-адресов.

urlpatterns = [
    path('profile/', views_register.profile, name='profile'),  
]

Я получаю поисковый запрос пользователя из следующего шаблона html.

<form method="GET" action="" id="searchform">
            <input class="searchfield" id="searchbox" name="q" type="text" value="{{ request.GET.q }}" placeholder="Search..."/>
        </form>

В моем views.py у меня есть функция для получения этого запроса, но я не знаю, как перенаправить пользователя, выполняющего поиск, в соответствующий профиль пользователя, поскольку на странице профиля для каждого пользователя нет никаких спецификаций c настраиваемый URL на основе имени пользователя.

class ProfileSearch(LoginRequiredMixin):
    template_name = 'home.html'

    def get_queryset(self, request):
        query = request.GET.get('q')
        if query:
            return User.objects.filter(username__icontains=query)
        else:
            return User.objects.all()

Как перенаправить инициатора запроса на эту новую страницу профиля? Я знаю, что эта функция ничего не делает, поскольку она не выполняет никаких динамических c перенаправлений, но я не знаю.

Ниже приводится модель профиля, которая автоматически создается с помощью сигналов при регистрации нового пользователя.

class Profile(models.Model):


user = models.OneToOneField(User, on_delete=models.CASCADE)
    image = models.ImageField(default= 'default.jpg', upload_to='profile_pics')

    def __str__(self):
        return f'{self.user.username} Profile'

    def save(self, *args, **kwargs):
        super().save(*args, **kwargs)
        img = Image.open(self.image.path)

        if img.height > 300 or img.width > 300:
            output_size = (300, 300)
            img.thumbnail(output_size)
            img.save(self.image.path)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...