Django Get方法,基数为10的文本无效

2024-05-15 09:38:56 发布

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

这与早先的机器翻译问题有关。我已经找到了一些类似问题的答案,但我不确定它们在这里如何适用。在

我尝试使用GET方法在Django web服务器上创建内容。当我键入以下url时:

 http://127.0.0.1:8000/maps/createEvent/?name=explosion&reporter=nathaniel&description=something%20exploded&lat=99&lon=99&timestamp=2434253

我得到这个错误:

^{pr2}$

以下是相关网址:

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,)))

Tags: django方法答案nameweburlgetrequest
1条回答
网友
1楼 · 发布于 2024-05-15 09:38:56

首先将^{}方法添加到Event模型中:

class Event(models.Model):
    # your fields go here

    def get_absolute_url(self):
       return reverse('maps:event_detail', self.pk)

你需要这样做:

^{pr2}$

^{}将自动保存对象;^{} shortcut如果传递了模型的实例,^{} shortcut会自动使用get_absolute_url方法。在

或者,您可以使用ModelForm-如果用户正在输入以下内容:

在名为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)现在是:

<form method="POST">
    {% csrf_token %}
    {{ form }}
    <input type="submit">
</form>

由于这是一种常见的模式(为模型创建新事物),django提供了一个通用的^{}来加快速度:

from django.generic.views import CreateView

class CreateEvent(CreateView):
     model = Event
     template_name = 'form.html'

以上所有代码片段执行完全相同的逻辑(除了第一个代码段,它只保存一个对象)。如您所见,django为常见任务提供了快速快捷方式。在

相关问题 更多 >