Django - 处理没有表单模型的表单

Elo*_*ati 1 python forms django

我希望处理我在 django 中用 HTML 创建的表单,但我找不到从输入中获取值的正确方法。

这是我的 HTML 表单:

<form action="" class="form-inline" method="post">
{% csrf_token %}
    <!-- malfunction description -->
    <label class="requiredField" for="malfunctionDescription">????
        ?????</label>
    <br/>
    <textarea class="form-control" style="width: 100%; margin-bottom: 3px"
              id="malfunctionDescription"
              name="malfunctionDescription"
              rows="5">
     </textarea>
</form>
Run Code Online (Sandbox Code Playgroud)

这是我的 view.py,不幸的是它是空的:

def index(request):
error = ''
if request.method == 'POST':
    status = request.POST['status']
    rank = request.POST['rank']
    opener = request.POST['MalfunctionOpener']
    handler = request.POST['malfunctionHandler']
    system = request.POST['system']
    unit = request.POST['unit']
    opening_date = request.POST['openingdate']
    closing_date = request.POST['closingdate']
    description = request.POST['malfunctionDescription']
    solution = request.POST['malfunctionSolution']
    summary = request.POST['malfunctionSummary']

    find_description = Malfunction.objects.filter(description=description)
    if find_description:
        error = 'This malfunction is already stored in the data base'
    else:
        Malfunction.objects.create(status=status, rank=rank, opener=opener, handler=handler, system=system,
                                   unit=unit, openingDate=opening_date, closingDate=closing_date, solution=solution,
                                   summary=summary, description=description)

else:
    error = 'Something went wrong'

return render(request, 'resources-management/home.html')
Run Code Online (Sandbox Code Playgroud)

我的主要目标是从表单中获取这些信息并创建一个将其推送到数据库的新对象。如果我正确理解创建此对象,我需要执行以下操作:

Object_name.object.create(information=information)
Run Code Online (Sandbox Code Playgroud)

但我不知道如何获取信息,我需要Flask 中的request.form['name'] 之类的东西

谢谢!

---- 编辑 1 - url.py ----

这是主要的 url.py

urlpatterns = [
url(r'^', include('elbit_ils.urls')),
url(r'^admin/', admin.site.urls),
url(r'^resources-management/', include('resources_management.urls')),
url(r'^registration-login/', include('registration_login.urls')),
url(r'^contact/', include('contact.urls')),
Run Code Online (Sandbox Code Playgroud)

]

这是应用程序 url.py

urlpatterns = [ url(r'^$', IndexView.as_view(), name="my_list"), url(r'^(?P<pk>\d+)$', DetailView.as_view(model=Malfunction, template_name="resources-management/malfunction.html")), ]

-- 编辑 2:索引视图 --

类索引视图(创建视图):

context_object_name = 'my_list'
template_name = 'resources-management/home.html'
queryset = Malfunction.objects.all()
fields = '__all__'

def get_context_data(self, **kwargs):
    context = super(IndexView, self).get_context_data(**kwargs)
    context['contacts'] = Contact.objects.all().order_by("firstname")
    context['malfunctions'] = Malfunction.objects.all().order_by("-openingDate")
    context['systems'] = System.objects.all().order_by("systemname")
    context['units'] = Unit.objects.all().order_by("unitname")
    # And so on for more models
    return context
Run Code Online (Sandbox Code Playgroud)

itz*_*nTV 7

如果你有一个像

<form action="" method="post">
    <input type="text" name="username" />
    <input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)

注意元素中的name属性input。然后

django,你会得到数据。request.POST所以你可以做

request.POST['username']
Run Code Online (Sandbox Code Playgroud)