#python #django #django-models #django-views
#python #django #django-модели #django-просмотры
Вопрос:
ошибка
Ошибка типа в / chat/search/
search_view() отсутствует 1 требуемый позиционный аргумент: ‘slug’
Метод запроса: POST
URL запроса: http://127.0.0.1:8000/chat/search /
Версия Django: 3.0.7 Тип исключения: TypeError
Значение исключения:
search_view() отсутствует 1 требуемый позиционный аргумент: ‘slug’
моя модель:
class UserProfile(models.Model)
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
slug = models.SlugField(blank=True)
image = models.ImageField(default='face.jpg', upload_to='images/avtar')
friends = models.ManyToManyField("UserProfile", blank= True)
def __str__(self):
return self.user.username
def get_absolute_url(self):
return "/chat/{}".format(self.slug)
def last_seen(self):
return cache.get('last_seen_%s' % self.user.username)
def post_save_user_model_receiver(sender, instance, created, *args, **kwargs):
if created:
try:
Profile.objects.create(user=instance)
except:
pass
post_save.connect(post_save_user_model_receiver, sender=settings.AUTH_USER_MODEL)
Мои URL-адреса:
url(r'^(?P<slug>[w-] )/$',search_view),
url(r'^friend-request/send/(?P<id>[w-] )/$', send_friend_request),
url(r'^friend-request/cancel/(?P<id>[w-] )/$', cancel_friend_request),
мой взгляд:
def search_view(request, slug):
p = UserProfile.objects.filter(slug=slug).first()
u = p.user;print(u)
sent_friend_requests = FriendRequest.objects.filter(from_user=p.user)
rec_friend_requests = FriendRequest.objects.filter(to_user=p.user)
friends = p.friends.all()
# is this user our friend
button_status = 'none'
if p not in request.user.profile.friends.all():
button_status = 'not_friend'
# if we have sent him a friend request
if len(FriendRequest.objects.filter(
from_user=request.user).filter(to_user=p.user)) == 1:
button_status = 'friend_request_sent'
if request.method =='POST':
query = request.POST.get('search')
results = User.objects.filter(username__contains=query)
context = {
'results':results,
'u': u,
'button_status': button_status,
'friends_list': friends,
'sent_friend_requests': sent_friend_requests,
'rec_friend_requests': rec_friend_requests
}
return render(request, 'chat/search.html', context)
Ответ №1:
Функция просмотра search_view(request, slug)
ищет slug
аргумент в определении функции, который не найден в URL-адресе запроса http://127.0.0.1:8000/chat/search/
Итак, URL-адрес запроса должен быть таким: http://127.0.0.1:8000/chat/search/some_slug
не похож http://127.0.0.1:8000/chat/search/
. Добавьте переменную slug в конец URL-адреса.
Ответ №2:
У вас есть переменная в вашем URL: url(r'^(?P[w-] )/$',search_view)
, вам нужно использовать эту переменную в URL запроса:http://127.0.0.1:8000/chat/search /, но его там нет, вот о чем говорит эта ошибка