我正在尝试 django 中的一些东西。只是一个简单的表格,它将添加每次登录数据库的尝试。它导致 ValueError: invalid literal for int() with base 10: 我检查了很多问题,但无法克服这个错误。
我有这样的看法。
class LoginView(TemplateView):
template_name = 'dashboard/login.html'
def post(self,request):
#firstname,email=request.POST['firstname'],request.POST['email']
#currLogin = LoginForm(firstname,email)
currLogin = LoginForm(request.POST)
if currLogin.is_valid():
firstname= currLogin.cleaned_data['firstname']
email = currLogin.cleaned_data['email']
print firstname,email
users = LoginModel.objects.filter(email=email)
if not users:
login = LoginModel(firstname,email)
login.save()
else :
return users[0].id
return 0
我的 models.py 文件包含:
class LoginModel(models.Model):
firstname = models.CharField(max_length=100)
email = models.CharField(max_length=100)
我的 form.py 包含这个:
class LoginForm(forms.Form):
firstname = forms.CharField(label="firstname",max_length=100)
email = forms.CharField(label="email",max_length=100)
class Meta:
model = LoginModel
堆栈跟踪:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/exception.py", line 39, in inner
response = get_response(request)
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py", line 68, in view
return self.dispatch(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py", line 88, in dispatch
return handler(request, *args, **kwargs)
File "/home/akshay/Downloads/mindwave/dashboard/views.py", line 27, in post
login.save()
File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 796, in save
force_update=force_update, update_fields=update_fields)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 824, in save_base
updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 889, in _save_table
forced_update)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 919, in _do_update
filtered = base_qs.filter(pk=pk_val)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 796, in filter
return self._filter_or_exclude(False, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 814, in _filter_or_exclude
clone.query.add_q(Q(*args, **kwargs))
File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/query.py", line 1227, in add_q
clause, _ = self._add_q(q_object, self.used_aliases)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/query.py", line 1253, in _add_q
allow_joins=allow_joins, split_subq=split_subq,
File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/query.py", line 1187, in build_filter
condition = self.build_lookup(lookups, col, value)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/query.py", line 1083, in build_lookup
return final_lookup(lhs, rhs)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/lookups.py", line 19, in __init__
self.rhs = self.get_prep_lookup()
File "/usr/local/lib/python2.7/dist-packages/django/db/models/lookups.py", line 59, in get_prep_lookup
return self.lhs.output_field.get_prep_value(self.rhs)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 946, in get_prep_value
return int(value)
ValueError: invalid literal for int() with base 10: 'Ak
感谢任何帮助解决这个问题的人。
最佳答案
这是罪魁祸首。
login = LoginModel(firstname, email)
当您以这种方式初始化模型时,参数将按照它们(字段)定义的顺序传递给字段。现在你的第一个参数是 firstname
,它将被分配给 Django 自动为你的模型定义的主键字段,并被认为是第一个。
解决方案。永远不要像这样初始化模型。始终传递命名参数
login = LoginModel(firstname=firstname, email=email)
关于python - Django: ValueError: 以 10 为底的 int() 的无效文字:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41463473/