请帮助修复代码。
model.py:
class Friends(models.Model):
user_id = models.IntegerField(
blank=False,
null=False,
)
friend_id = models.IntegerField(
blank=False,
null=False,
)
@classmethod
def get_entry(self, user_id, friend_id):
return False
views.py:
@ login_required
def user_personal(request, id):
if request.method == 'POST':
path_pk = id
user_id = int(request.user.pk)
if request.POST.get('action', '') == 'add':
try:
with open(os.path.join(settings.BASE_DIR, "add1.txt"), "wb") as f:
f.write(bytes(user_id, 'UTF-8'))
Friends.get_entry(user_id=user_id, friend_id=path_pk) #
except:
with open(os.path.join(settings.BASE_DIR, "add2.txt"), "wb") as f:
f.write(bytes(user_id, 'UTF-8'))
Friends.set_entry(user_id=user_id, friend_id=path_pk)
t = loader.get_template('user_personal.html')
c = RequestContext(request, {})
return HttpResponse(t.render(c))
问题在于它何时起作用
user_personal (request, 3)
,然后有一个写调试文件add1.txt。并且没有记录调试文件add2.txt。调试文件add1.txt的内容如下:
NUL NUL
因为此功能不起作用
Friends.get_entry (user_id = user_id, friend_id = path_pk)
答案 0 :(得分:2)
在Python3中,bytes类型表示整数序列。传递一个整数转换为字节对象将创建一个bytes
类型,其序列为NUL
个字符,也就是\x00
,并传递整数的长度。我猜您的用户对象的pk
为2
,因此以下行:
f.write(bytes(user_id, 'UTF-8'))
将整数序列\x00\x00
写入文件。您的文本编辑器将其表示为NUL NUL
。