
Artem?
07.01.2019
14:52:59


Egor
07.01.2019
14:55:29
Django
В файле tests.py у меня такой код
def setUp(self):
...
self.user = User.objects.create(username="User", password="testpassword")
self.logged_client = Client()
self.logged_client.login(username="User", password="testpassword")
def test_create_topic_form_redirects(self):
response = self.logged_client.post(reverse(...),{
'theme':'Theme',
'message':'Text',
'tags':'tag1','tag2'
})
И этот post принимает такая функция
def post(self,request,*args,**kwargs):
form = self.form_class(request.POST)
if form.is_valid():
tags = form.get_tags()
topic = Topic.objects.create(
subforum=SubForum.objects.get(pk=kwargs['pk']),
theme=form.cleaned_data['theme'],
creator=request.user)#Вот тут ошибка
for tag in tags:
topic.tags.add(tag)
message = Message.objects.create(
creator=request.user,
text=form.cleaned_data['message'],
topic=topic,
)
topic.save()
message.save()
И тест выдает такую ошибку
ValueError: Cannot assign "<SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x04A678D0>>": "Topic.creator" must be a "User" instance.
Но ведь у меня в тесте юзер залогиненный, почему он AnonymousUser?

Google


Denis
07.01.2019
14:57:38
Django
В файле tests.py у меня такой код
def setUp(self):
...
self.user = User.objects.create(username="User", password="testpassword")
self.logged_client = Client()
self.logged_client.login(username="User", password="testpassword")
def test_create_topic_form_redirects(self):
response = self.logged_client.post(reverse(...),{
'theme':'Theme',
'message':'Text',
'tags':'tag1','tag2'
})
И этот post принимает такая функция
def post(self,request,*args,**kwargs):
form = self.form_class(request.POST)
if form.is_valid():
tags = form.get_tags()
topic = Topic.objects.create(
subforum=SubForum.objects.get(pk=kwargs['pk']),
theme=form.cleaned_data['theme'],
creator=request.user)#Вот тут ошибка
for tag in tags:
topic.tags.add(tag)
message = Message.objects.create(
creator=request.user,
text=form.cleaned_data['message'],
topic=topic,
)
topic.save()
message.save()
И тест выдает такую ошибку
ValueError: Cannot assign "<SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x04A678D0>>": "Topic.creator" must be a "User" instance.
Но ведь у меня в тесте юзер залогиненный, почему он AnonymousUser?
Потому что вьюха не проверяет, что юзер залогинен
Добавь LoginRequiredMixin


Maxim robox
07.01.2019
14:58:26
Тебе же уже ответили.

Denis
07.01.2019
14:58:37
И зачем там is_valid, если можно взять FormView?

Egor
07.01.2019
15:01:30

Maxim robox
07.01.2019
15:01:53

Denis
07.01.2019
15:02:32
Темплейты для отображения, а не для бизнес-логики

Egor
07.01.2019
15:03:31

fickle asshole
07.01.2019
15:03:49

Tishka17
07.01.2019
15:04:27

Denis
07.01.2019
15:04:34

Egor
07.01.2019
15:06:37
Так почему у меня в тесте через post запрос функция получает Anonymous User?

Google

Denis
07.01.2019
15:09:54
Проверь, что логин успешно проходит

Maxim robox
07.01.2019
15:12:41


Egor
07.01.2019
15:27:12
Django
В файле tests.py у меня такой код
def setUp(self):
...
self.user = User.objects.create(username="User", password="testpassword")
self.logged_client = Client()
self.logged_client.login(username="User", password="testpassword")
def test_create_topic_form_redirects(self):
response = self.logged_client.post(reverse(...),{
'theme':'Theme',
'message':'Text',
'tags':'tag1','tag2'
})
И этот post принимает такая функция
def post(self,request,*args,**kwargs):
form = self.form_class(request.POST)
if form.is_valid():
tags = form.get_tags()
topic = Topic.objects.create(
subforum=SubForum.objects.get(pk=kwargs['pk']),
theme=form.cleaned_data['theme'],
creator=request.user)#Вот тут ошибка
for tag in tags:
topic.tags.add(tag)
message = Message.objects.create(
creator=request.user,
text=form.cleaned_data['message'],
topic=topic,
)
topic.save()
message.save()
И тест выдает такую ошибку
ValueError: Cannot assign "<SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x04A678D0>>": "Topic.creator" must be a "User" instance.
Но ведь у меня в тесте юзер залогиненный, почему он AnonymousUser?
Надо было использовать эту штуку https://docs.djangoproject.com/en/2.1/topics/testing/advanced/#the-request-factory


m
07.01.2019
15:33:26
Ищем смышленых специплистов в Анапе для создания делового онлайн кластера.
Варианты связи:
1. Тверская 91 а - наш коворкинг-центр.
2. В этом чате.
.
Администрации канала отдельное уважение.

Ilya
07.01.2019
15:38:03

Aragaer
07.01.2019
15:38:50
r нужна чтобы \ было просто \, а не эскейпало то, что после нее

TpouHuK
07.01.2019
15:41:17

Aragaer
07.01.2019
15:41:57
мм. Да, но \ тоже вставится
>>> r''' ' '''
" ' "

Ilya
07.01.2019
15:44:13
Тогда 2ой вариант
Вроде r'{}'.format(val) тоже работает

Aragaer
07.01.2019
15:44:46
но зачем тут r?

Ilya
07.01.2019
15:45:20
Тип паттерн для регулярки

Aragaer
07.01.2019
15:46:07
r это не паттерн для регулярки
r просто отключает экранирование

Valery
07.01.2019
15:46:33
я кстати раньше тоже наивно полагал что r - для паттернов)

Ilya
07.01.2019
15:46:39

Aragaer
07.01.2019
15:46:51
поскольку в регулярках нужно экранирование для самих регулярок, то чтобы не было "\\d+", используют r и тогда только один \ нужен и регулярка выглядит разумно

Nikolay
07.01.2019
15:58:33
Регулярки регулярочки

You
07.01.2019
16:25:54
Наивный Эльдар

Eldar
07.01.2019
16:26:02

Google

Denis
07.01.2019
16:26:05
Ты кто

You
07.01.2019
16:26:15

Eldar
07.01.2019
16:26:21

You
07.01.2019
16:26:24
Месяцами проверено

Eldar
07.01.2019
16:26:43
в моточате тоже

You
07.01.2019
16:27:16
Ладно, моё дело поделиться опытом

Nikolay
07.01.2019
16:28:13
печальный опыт

Denis
07.01.2019
16:28:33
Где у него ман?

Terminator
07.01.2019
16:28:47
@testye будет жить. Поприветствуем!

Maxim robox
07.01.2019
16:29:12

Eldar
07.01.2019
16:29:27

Denis
07.01.2019
16:29:30

Maxim robox
07.01.2019
16:29:52

Denis
07.01.2019
16:30:20
Тут нет описания того, что он делает

Maxim robox
07.01.2019
16:30:34

Eldar
07.01.2019
16:31:00
только в этот раз дверью не хлопай)

Terminator
07.01.2019
16:31:05
@bladdon будет жить. Поприветствуем!

Denis
07.01.2019
16:31:28
А если у меня интернет плохой, и я не успею за минуту нажать?

Eldar
07.01.2019
16:31:48

Google

Eldar
07.01.2019
16:32:07
т.е просто еще раз зайдешь
ну в крайнем случае нам напишешь)
чую это будет спамер)

fickle asshole
07.01.2019
16:49:02

Denis
07.01.2019
16:49:17

fickle asshole
07.01.2019
16:49:26

Terminator
07.01.2019
16:50:01
Павел Мудрый будет жить. Поприветствуем!

Mudrblй
07.01.2019
16:50:24
Плагиатор!

Denis
07.01.2019
16:50:57

Проксимов
07.01.2019
16:51:44

MrFaul
07.01.2019
17:42:28
Какой порт и хост лучше всего подходит socket модулю для работы вне локальное сети?

Tishka17
07.01.2019
17:43:33
О_о
Хост - твой айпи, порт - сам выбери свободный

MrFaul
07.01.2019
17:44:19
Ок
Спасибо

Маришка
07.01.2019
17:44:32

Tishka17
07.01.2019
17:44:48
Ну то есть запускай наверно на 0.0.0.0