【问题标题】:Post a JSON object on conditional input -- Django Restframework在条件输入上发布 JSON 对象——Django Rest Framework
【发布时间】:2021-07-09 04:46:56
【问题描述】:

我正在开发 Django Restframework。我想 POST 到 API 以创建对象。

问题是我想要做出的条件,它本身就在 POST 数据中。

例如,我有 5 个字段:

  1. 姓名
  2. 姓氏
  3. 电子邮件
  4. is_member
  5. membership_id

如果用户在发布数据时发送“is_member== True”,我想创建一个membership_id。

问题:数据确实已发布,但“membership_id”为空白。并且没有收到错误。 我可以得出结论,原因是在设置所有字段之前触发了“if/else”条件。

我试图给出“if/else”条件

  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')

有可能还是我必须寻找一些不同的方法。 欢迎任何想法!谢谢。

【问题讨论】:

    标签: python-3.x django django-rest-framework


    【解决方案1】:

    我从您的问题中了解到,您希望将会员 ID 存储为某个值,如果为真,如果为假,则存储为空白。

    我有两个建议给你: 1.尝试如下if语句:

    if is_member == 'True':
       membership_id = hashString(str(timestamp))
    else:
       membership_id = ""
    

    2.尝试在 if 语句的控制台中打印“is_member”和“membership_id”,并检查其中存储的内容。我猜你的 'hashString' 方法不起作用。

    print(is_member)
    if is_member == True:
           membership_id = hashString(str(timestamp))
           print(membership_id )
    else:
           membership_id = ""
    

    其他一切都不得改变。如果您仍然找不到解决方案,那么您必须交叉检查您的“模型”和“MasterUser”方法。

    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')
        
    

    【讨论】:

    • 成功了!谢谢罗希特。我实际上是在尝试传递不带字符串的布尔值,即 True/False 而不是“True”/“False”,并且 Try/Except 方法也在 If 语句之外。感谢帮助!非常感谢
    猜你喜欢
    • 2019-01-13
    • 2013-02-17
    • 2016-09-16
    • 1970-01-01
    • 2015-12-06
    • 2016-01-22
    • 2015-04-17
    • 1970-01-01
    • 2016-03-23
    相关资源
    最近更新 更多