【问题标题】:Django forms not shDjango 表单不是 sh
【发布时间】:2018-07-21 07:05:16
【问题描述】:

由于某种原因,我的 forms.py 没有查看任何字段,而是只显示“添加”按钮,我不知道该怎么办了。如果知道自己在做什么的人能告诉我我做了什么或没做什么,我将不胜感激。

请注意,我是 Django 新手,谢谢。

这是我的观点.py:

from django.shortcuts import render
from django.utils import timezone
from .models import Measurement
from .forms import MeasurementForm
from django.views import generic


class IndexView(generic.ListView):
    model = Measurement
    context_object_name = 'measurement_list'
    template_name = 'index.html'
    queryset = Measurement.objects.all()


def new_measurement(request):
    if request.method == "POST":
        form = MeasurementForm(request.POST)
        if form.is_valid():
            measurement = form.save(commit=False)
            measurement.measurement_date = timezone.now()
            measurement.save()
    else:
        form = MeasurementForm()

    return render(request, 'index.html', {'form': form})

urls.py:

from django.urls import path
from . import views


urlpatterns = [
    path('', views.IndexView.as_view(), name='index'),
]

forms.py: 从 django 导入表格 从 .models 导入测量

class MeasurementForm(forms.ModelForm):
    class Meta:
        model = Measurement
        fields = ('measurement_value', 'measurement_unit')

index.html:

{% extends "base.html" %}

{% block content %}
    <h1>Climate Measurement Tool</h1>

    <h2>Add a new measurement</h2>
    <form method="POST" class="post-form">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit" class="save">Add</button>
    </form>

    <h2>Measurements</h2>
    {% if measurement_list %}
    <ul>
        {% for measurement in measurement_list %}
        <li>
            <p>{{ measurement }}</p>
        </li>
        {% endfor %}
    </ul>
    {% else %}
        <p>No measurements yet</p>
    {% endif %}    
{% endblock %}

【问题讨论】:

    标签: python django python-3.x django-forms


    【解决方案1】:

    new_measurement() 视图正确初始化表单实例并将其传递给模板。

    不幸的是,该视图从未被调用。

    urls.py 只定义了一个 url,由IndexView.as_view() 处理,它不会将表单实例传递给模板。

    【讨论】:

    • 哦,你是对的,谢谢!你介意向我解释一下我该如何做我想做的事吗?我试图在 IndexView 中添加新的measurement(),但没有成功。这可能是一个非常初学者的问题,但我仍然对表单有点困惑,并且没有找到任何好的 Django 2.0 教程来解释这些概念以便人们可以应用它们。
    猜你喜欢
    • 2013-02-01
    • 1970-01-01
    • 2011-01-08
    • 2011-10-16
    • 1970-01-01
    • 2021-07-26
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多