【发布时间】:2019-08-30 22:29:31
【问题描述】:
我正在获取用户 ID,我需要 INT 格式的用户 ID,但我只能通过函数返回来获取。如何从函数转换为 INT?我正在使用 Django 2.1.7 和 python 3.7。
from django.contrib.auth import authenticate
from django.http import HttpRequest
request=HttpRequest
username='myuser'
password='mypass'
user = authenticate(username=username, password=password)
def user_id(request):
UID = request.user
return(UID)
UID=user_id
print(type(UID))
<class 'function'>
print(UID)
<function user_id at 0x106cd9158>
print(user.id)
19
views.py:
def get_userid(request):
if User.is_authenticated:
UID = request.user.id
return (UID)
if User.is_anonymous:
UID = 14
return (UID)
def opsearch(request):
item = request.POST['item']
dic = MLRun(item)
return render(request, 'main/layout/results.html', {'dictionary': dic})
我调用模板的代码:
def to_DB(item, dic):
UID = get_userid
date_started = (timezone.now())
item_searched = item
Q = OPQuery(date_started=date_started,
item_searched=item_searched, id_user=UID)
Q.save()
QID = Q.id
QUID = OPQuery.objects.get(id=QID)
错误:
TypeError at /main/search/
int() argument must be a string, a bytes-like object or a number, not 'function'
Request Method: POST
Request URL: http://127.0.0.1:8000/main/search/
Django Version: 2.1.7
Exception Type: TypeError
Exception Value:
int() argument must be a string, a bytes-like object or a number, not 'function'
Exception Location: /usr/local/Cellar/python/3.7.2_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/models/fields/__init__.py in get_prep_value, line 1807
Python Executable: /Users/Documents/PycharmProjects/OP/bin/python
Python Version: 3.7.2
【问题讨论】:
-
你需要调用该函数。
-
但是无论如何,您不能在视图之外提出请求。这段代码没有任何意义。
-
@Sayse,请问我如何调用该函数?
-
@DanielRoseman 我确实在 Django Shell 中使用了这段代码来模拟我需要的东西。如果您有任何建议,我很感激知道。谢谢。
-
没有。显示您的实际视图代码和您在浏览器中遇到的错误。