#python-3.x #django #django-rest-framework
Вопрос:
Я работаю над каркасом Django Restframework. Я хочу опубликовать в API для создания объекта.
Проблема в том, что условие, которое я хочу выполнить, само по себе содержится в данных POST.
Например, у меня есть 5 полей:
- Имя
- Фамилия
- Электронная почта
- is_member
- идентификатор участника
Я хочу создать идентификатор членства, если пользователь отправляет «is_member== True» во время публикации данных.
Проблема: данные действительно публикуются, но «membership_id» пуст. И никаких ошибок не получено. Я мог бы сделать вывод, что причина в том, что условие «если/иначе» срабатывает до того, как будут установлены все поля.
Я попытался поставить условие «если/иначе»
- когда функция запускается
- Внутри объекта, в котором сохранена запись
user_object
, т. е.
Но ничего не работает
Я здесь до сих пор
def create_user(request):
if request.method == "POST":
firstname = request.POST.get('firstname')
lastname = request.POST.get('lastname')
email = request.POST.get('email')
is_member = request.POST.get('is_member') # default is = False
category = request.POST.get('category')
timestamp = int(datetime.now(tz=timezone.utc).timestamp()*1000)
if is_member == True:
membership_id = hashString(str(timestamp))
else:
membership_id = ""
try:
user_object = MasterUser(
firstname = firstname,
lastname = lastname,
email = email,
is_member = is_member,
membership_id = membership_id
)
user_object.save()
return HttpResponse('User successfully created')
Возможно ли это, или мне нужно искать какое-то другое приложение.
Любые идеи приветствуются! Спасибо.
Ответ №1:
Что я понял из вашего вопроса, так это то, что вы хотите сохранить идентификатор участника как некоторое значение, если оно верно, а если ложно, то сохраните как пустое.
У меня есть два предложения для вас: 1.Попробуйте, если вам нравится следующее:
if is_member == 'True':
membership_id = hashString(str(timestamp))
else:
membership_id = ""
2.Попробуйте напечатать «is_member» и «membership_id» в консоли в инструкции if и проверьте, что там хранится. Я предполагаю, что ваш метод «хэш-строки» не работает.
print(is_member)
if is_member == True:
membership_id = hashString(str(timestamp))
print(membership_id )
else:
membership_id = ""
Все остальное не должно меняться. Если вы все еще не можете найти решение, то вы должны перепроверить свою «модель» и метод «Мастер-пользователь».
Кроме того, метод try должен находиться внутри оператора if, а не снаружи. Подобный этому:
def create_user(request):
if request.method == "POST":
firstname = request.POST.get('firstname')
lastname = request.POST.get('lastname')
email = request.POST.get('email')
is_member = request.POST.get('is_member') # default is = False
category = request.POST.get('category')
timestamp = int(datetime.now(tz=timezone.utc).timestamp()*1000)
if is_member == True:
membership_id = hashString(str(timestamp))
else:
membership_id = ""
try:
user_object = MasterUser(
firstname = firstname,
lastname = lastname,
email = email,
is_member = is_member,
membership_id = membership_id
)
user_object.save()
return HttpResponse('User successfully created')
else:
return HttpResponse('User not created')
Комментарии:
1. Это сработало! Спасибо Рохиту. Я на самом деле пытался передать логическое значение без строки, т. Е. True/False, а не «True»/»False», а также метод Try/Except был вне оператора If. Спасибо за помощь! Большое спасибо