Python 在数据库中保存表单数据

Python 在数据库中保存表单数据,python,django,django-models,django-views,django-forms,Python,Django,Django Models,Django Views,Django Forms,您好,我是Django的新手,我已经创建了一个可用的房屋张贴表单,但我无法将输入的数据存储在数据库中。我使用了if form.is_有效和form.cleaned_数据请我需要帮助我的代码: views.py def public(request): form = PublicationForm() if request.method == 'POST': form = PublicationForm(request.POST, request.FILES) if form.is

您好,我是Django的新手,我已经创建了一个可用的房屋张贴表单,但我无法将输入的数据存储在数据库中。我使用了if form.is_有效和form.cleaned_数据请我需要帮助我的代码:

views.py

def public(request):
form = PublicationForm()
if request.method == 'POST':
    form = PublicationForm(request.POST, request.FILES)
    if form.is_valid():
        first_name=form.cleaned_data['first_name']
        last_name=form.cleaned_data['last_name']
        agency_name=form.cleaned_data['agency_name']
        city=form.cleaned_data['city']
        categories=form.cleaned_data['categories']
        status=form.cleaned_data['status']
        phone_number_1=form.cleaned_data['phone_number_1']
        phone_number_2=form.cleaned_data['phone_number_2']
        description=form.cleaned_data['description']
        image_one=form.cleaned_data['image_one']
        pub = Publication.objects.create(
            first_name=first_name,
            last_name=last_name,
            agency_name=agency_name,
            city=city,
            categories=categories,
            status=status,
            phone_number_1=phone_number_1,
            phone_number_2=phone_number_2,
            description=description,
            image_one=image_one
        )
        pub.save()
    return HttpResponse("Publication réussie")
else:
    form = PublicationForm()

return render(request, 'pub/public.html', {'form':form})
这是我的模板视图,我使用了django crispy表单模块

public.html

<form method="POST" enctype="multipart/form-data " class="form-block ">
                {% csrf_token %} {{ form.non_field_errors }}
                <div class="form-row">
                    <div class="col-md-4 mb-3">
                        {{ form.first_name.errors }}
                        <label for="{{ form.first_name.id_for_label }} "></label> {{ form.first_name|as_crispy_field }}
                    </div>
                    <div class="col-md-4 mb-3">
                        {{ form.last_name.errors }}
                        <label for="{{ form.last_name.id_for_label }} "></label> {{ form.last_name|as_crispy_field }}
                    </div>
                    <div class="col-md-4 mb-3">
                        {{ form.agency_name.errors }}
                        <label for="{{ form.agency_name.id_for_label }} "></label> {{ form.agency_name|as_crispy_field }}
                    </div>
                    <div class="col-md-4 mb-3">
                        {{ form.city.errors }}
                        <label for="{{ form.city.id_for_label }} "></label> {{ form.city|as_crispy_field }}
                    </div>
                    <div class="col-md-4 mb-3">
                        {{ form.categories.errors }}
                        <label for="{{ form.categories.id_for_label }} "></label> {{ form.categories|as_crispy_field }}
                    </div>
                    <div class="col-md-4 mb-3">
                        {{ form.status.errors }}
                        <label for="{{ form.status.id_for_label }} "></label> {{ form.status|as_crispy_field }}
                    </div>
                    <div class="col-md-6 mb-3">
                        {{ form.phone_number_1.errors }}
                        <label for="{{ form.phone_number_1.id_for_label }} "></label> {{ form.phone_number_1|as_crispy_field }}
                    </div>
                    <div class="col-md-6 mb-3">
                        {{ form.phone_number_2.errors }}
                        <label for="{{ form.phone_number_2.id_for_label }} "></label> {{ form.phone_number_2|as_crispy_field }}
                    </div>
                    <div class="col-md-12 mb-3">
                        {{ form.description.errors }}
                        <label for="{{ form.description.id_for_label }} "></label> {{ form.description|as_crispy_field }}
                    </div>
                    <div class="col-md-6 mb-3">
                        {{ form.image_one.errors }}
                        <label for="{{ form.image_one.id_for_label }} "></label> {{ form.image_one|as_crispy_field }}
                    </div>
                </div>
                <button type="submit " class="btn btn-outline-primary btn-lg btn-block">Publier</button>
            </form>

您有一个模型表单,它是一个连接到您的模型的表单。 您所做的是取出所有用户输入并尝试使用它创建一个对象。

在我的示例中,您只需保存连接到模型的表单输入


编辑: 将消息添加到
views.py
重定向将输入放入
url.py的路径名

信息链接:

重定向链接:


#模板
{%if消息%}
    {消息%中的消息为%s}
  • {{{message}
  • {%endfor%}
{%endif%}
我建议如下:

def public(request):
    form = PublicationForm(request.POST or None, request.FILES or None)
    if form.is_valid():    
        pub = form.save()
        return HttpResponse("Publication réussie")

    return render(request, 'pub/public.html', {'form':form})

现在,我想被重定向到同一页的消息。。。我该怎么做?添加消息并重定向到答案中@达克鲁兹威尔弗里德酒店
#Views.py
from django.contrib import messages
from django.shortcuts import redirect

    def public(request):
        form = PublicationForm()
        if request.method == 'POST':
            form = PublicationForm(request.POST, request.FILES)
            if form.is_valid():
                form.save()
                messages.success(request, 'Your password was updated successfully!')
            return redirect('index')
        else:
            form = PublicationForm()
        
        return render(request, 'pub/public.html', {'form':form})
#template
{% if messages %}
  <ul class="messages">
    {% for message in messages %}
      <li class="{{ message.tags }}">{{ message }}</li>
    {% endfor %}
  </ul>
{% endif %}
def public(request):
    form = PublicationForm(request.POST or None, request.FILES or None)
    if form.is_valid():    
        pub = form.save()
        return HttpResponse("Publication réussie")

    return render(request, 'pub/public.html', {'form':form})