Опубликуйте объект JSON при условном вводе-Каркасная работа Django

#python-3.x #django #django-rest-framework

Вопрос:

Я работаю над каркасом Django Restframework. Я хочу опубликовать в API для создания объекта.

Проблема в том, что условие, которое я хочу выполнить, само по себе содержится в данных POST.

Например, у меня есть 5 полей:

  1. Имя
  2. Фамилия
  3. Электронная почта
  4. is_member
  5. идентификатор участника

Я хочу создать идентификатор членства, если пользователь отправляет «is_member== True» во время публикации данных.

Проблема: данные действительно публикуются, но «membership_id» пуст. И никаких ошибок не получено. Я мог бы сделать вывод, что причина в том, что условие «если/иначе» срабатывает до того, как будут установлены все поля.

Я попытался поставить условие «если/иначе»

  1. когда функция запускается
  2. Внутри объекта, в котором сохранена запись 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. Спасибо за помощь! Большое спасибо