我的post方法返回(u“”),Django saves在保存i时包含(u“”)字符串

2024-05-06 02:07:02 发布

您现在位置:Python中文网/ 问答频道 /正文

这就是我如何从网页检索post数据的方法。可以保存person模型,但它包含"(u'')"字符串。例如,如果将firstname更改为“Alex”,它将获得原始值u('Alex'),并将其保存。在

def submit_e(req, person_id=None):

if(req.POST):

    try:
        person_id = req.POST['driver']
        person = Person.objects.get(pk=person_id)


        person.firstname = req.POST['firstname'],
        person.midname   = req.POST['middleinitial'],
        person.lastname  = req.POST['lastname'],

        person.full_clean()
        person.save()
    except Exception as e:
        print e
    return HttpResponseRedirect(reverse('users:user_main'))

Tags: 数据方法字符串模型id网页deffirstname
2条回答

NB:根据您的问题,以下是我对您看到的情况的最佳猜测。如果我猜错了,请用更多的细节更新你的帖子——在你的代码中放入print语句,并将输出添加到帖子中,这将是一个好的开始。

字符串上的u前缀表示Unicode字符串。它实际上不是字符串内容的一部分。如果我们在解释器中创建字符串:

>>> name = u'Me'

然后请求字符串的详细信息

^{pr2}$

然后,u显示为它是有关字符串的信息的一部分,这正是我们所要求的。如果我们打印字符串的内容

>>> print name
Me

那么u就不显示了(就像引号没有显示一样)。在

使用解释器尝试重现您的问题,我创建了一个新用户,用户名使用Unicode字符串:

>>> from django.contrib.auth.models import User
>>> new_user = User()
>>> new_user.username = u'Me'
>>> new_user.save()

如前所述,如果我们请求有关字符串的详细信息,我们会看到u和引号,但如果我们打印字符串的内容,则不会:

>>> new_user.username
u'Me'
>>> print new_user.username
>>> Me

为了进一步确认u没有被存储,我们可以直接浏览数据库:

sqlite> select username from auth_user;
Me

您需要删除每行末尾的“,” 所以,之前:

person.firstname = req.POST['firstname'],
person.midname   = req.POST['middleinitial'],
person.lastname  = req.POST['lastname'],

之后

^{pr2}$

相关问题 更多 >