Я хочу расширить свое приложение для блога 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)