Python Django Get方法,基10的文本无效
这与先前的mt问题有关。我已经找到了一些类似问题的答案,但我不确定它们在这里是如何应用的 我正在尝试使用GET方法在Django Web服务器上创建内容。当我键入以下url时:Python Django Get方法,基10的文本无效,python,django,Python,Django,这与先前的mt问题有关。我已经找到了一些类似问题的答案,但我不确定它们在这里是如何应用的 我正在尝试使用GET方法在Django Web服务器上创建内容。当我键入以下url时: http://127.0.0.1:8000/maps/createEvent/?name=explosion&reporter=nathaniel&description=something%20exploded&lat=99&lon=99×tamp=2434253
http://127.0.0.1:8000/maps/createEvent/?name=explosion&reporter=nathaniel&description=something%20exploded&lat=99&lon=99×tamp=2434253
我得到这个错误:
invalid literal for int() with base 10: 'explosion'
Request Method: GET
Request URL: http://127.0.0.1:8000/maps/createEvent/?name=explosion&reporter=nathaniel&description=something%20exploded&lat=99&lon=99×tamp=2434253
Django Version: 1.5.2
Exception Type: ValueError
Exception Value:
invalid literal for int() with base 10: 'explosion'
以下是有问题的url:
url(r'^createEvent/$', views.createEvent, name='createEvent')
以及以下观点:
def createEvent(request):
e = Event(request.GET['name'],request.GET['reporter'],request.GET['description'],
request.GET['lat'],request.GET['lon'],request.GET['timestamp'])
e.save()
return HttpResponseRedirect(reverse('maps:event_detail', args=(e.id,)))
首先将方法添加到事件
模型:
class Event(models.Model):
# your fields go here
def get_absolute_url(self):
return reverse('maps:event_detail', self.pk)
您需要这样做:
from django.shortcuts import redirect
def createEvent(request):
e = Event.objects.create(name=request.GET.get('name'),
reporter=request.GET.get('reporter'),
description=request.GET.get('description'),
lat=request.GET.get('lat'),
lon=request.GET.get('lon'),
timestamp=request.GET.get('timestamp'))
return redirect(e)
将自动保存对象;如果传递了模型的实例,则会自动使用get\u absolute\u url
方法
或者,您可以使用模型表单
-如果这是用户正在输入的内容:
在名为forms.py
的文件中,添加以下内容:
from django import forms
from .models import Event
class EventForm(forms.ModelForm):
class Meta:
model = Event
现在,您的视图变得非常简单:
from django.shortcuts import render
from .forms import EventForm
def createEvent(request):
form = EventForm(request.POST)
if form.is_valid():
e = form.save()
return redirect(e)
return render(request, 'form.html', {'form': form})
您的模板(form.html)现在是:
以上所有代码段都执行完全相同的逻辑(第一个代码段除外,它只保存一个对象)。如您所见,django为常见任务提供了快速快捷方式。首先向您的事件
模型添加一个方法:
class Event(models.Model):
# your fields go here
def get_absolute_url(self):
return reverse('maps:event_detail', self.pk)
您需要这样做:
from django.shortcuts import redirect
def createEvent(request):
e = Event.objects.create(name=request.GET.get('name'),
reporter=request.GET.get('reporter'),
description=request.GET.get('description'),
lat=request.GET.get('lat'),
lon=request.GET.get('lon'),
timestamp=request.GET.get('timestamp'))
return redirect(e)
将自动保存对象;如果传递了模型的实例,则会自动使用get\u absolute\u url
方法
或者,您可以使用模型表单
-如果这是用户正在输入的内容:
在名为forms.py
的文件中,添加以下内容:
from django import forms
from .models import Event
class EventForm(forms.ModelForm):
class Meta:
model = Event
现在,您的视图变得非常简单:
from django.shortcuts import render
from .forms import EventForm
def createEvent(request):
form = EventForm(request.POST)
if form.is_valid():
e = form.save()
return redirect(e)
return render(request, 'form.html', {'form': form})
您的模板(form.html)现在是:
以上所有代码段都执行完全相同的逻辑(第一个代码段除外,它只保存一个对象)。如您所见,django为常见任务提供了快速快捷方式。您可以发布
事件模型的定义吗?事件构造函数是否希望第一个参数为整数?或者更好的说法是尝试将字符串转换为int?实际上我刚刚解决了这个问题,我将在下面发布我的答案。谢谢大家。有时候,只要问一个问题就能知道答案;)我喜欢这种情况发生在我身上。哈哈,是的,我不能在8小时内发布答案,因为我没有代表,但基本上我需要将事件(,…)放入构造函数中。我不习惯这种格式。您能发布事件模型的定义吗?事件构造函数是否希望第一个参数为整数?或者更好的说法是尝试将字符串转换为int?实际上我刚刚解决了这个问题,我将在下面发布我的答案。谢谢大家。有时候,只要问一个问题就能知道答案;)我喜欢这种情况发生在我身上。哈哈,是的,我不能在8小时内发布答案,因为我没有代表,但基本上我需要将事件(,…)放入构造函数中。我不习惯那种格式。嘿,谢谢你!这是一个很好的答案。事实证明,我面临的实际错误是createEvent()示例中的键值配对。我昨晚就想出来了,但既然你得到了这个+大约一打其他的东西,我就称之为回答。如果你想编辑它,特别指出我的语法错误,我会接受。嘿,谢谢!这是一个很好的答案。事实证明,我面临的实际错误是createEvent()示例中的键值配对。我昨晚就想出来了,但既然你得到了这个+大约一打其他的东西,我就称之为回答。如果你想编辑它,特别指出我的语法错误,我会接受。