为什么在完成所有迁移的同时,django框架中的数据没有存储在数据库中?

问题描述 投票:0回答:1

我正在学习Django我已经完成了javatpoint(学习网站)中解释的所有内容,我已完成所有迁移,我已经执行了python manage.pymigrate,makemigrations,sqlmigrate appname 0001_initial所有内容,表单创建成功但数据上传是不存储在数据库中。我只想将数据(名字和姓氏)存储到employee表中,将数据下载为csv文件。

views.py
from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.
from django.shortcuts import render, redirect
from name.forms import EmployeeForm
from name.models import Employee
import csv



def index(request):
    if request.method == "POST":
        form = EmployeeForm(request.POST)
        if form.is_valid():
            try:
                return redirect('/')
            except:
                pass
    else:
        form = EmployeeForm()
    return render(request,'index.html',{'form':form})

def getfile(request):
    response = HttpResponse(content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename="file.csv"'
    employees = Employee.objects.all()
    writer = csv.writer(response)
    for employee in employees:
        writer.writerow([employee.id,employee.first_name,employee.last_name])
    return response





 forms.py

    from django import forms
    from name.models import Employee


    class EmployeeForm(forms.ModelForm):
        class Meta:
            model = Employee
            fields = "__all__"





models.py

from __future__ import unicode_literals
from django.db import models
class Employee(models.Model):
    first_name = models.CharField(max_length=20)
    last_name = models.CharField(max_length=30)

    class Meta:
        db_table = "employee"




script.js
alert("Hello, Welcome to Javatpoint");







index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Index</title>
</head>
<body>
<form method="POST" class="post-form" enctype="multipart/form-data">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit" class="save btn btn-default">Save</button>
</form>
</body>
</html>

style.css
h1{
color:red;
}







urls.py
from django.contrib import admin
from django.urls import path
from name import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', views.index),
    path('csv',views.getfile)

]


 0001_initial.py(after migration)


    from django.db import migrations, models


    class Migration(migrations.Migration):

        initial = True

        dependencies = [
        ]

        operations = [
            migrations.CreateModel(
                name='Employee',
                fields=[
                    ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                    ('first_name', models.CharField(max_length=20)),
                    ('last_name', models.CharField(max_length=30)),
                ],
                options={
                    'db_table': 'employee',
                },
            ),
        ]
python django
1个回答
0
投票

Django ModelForms有一个save方法来实际将表单数据插入数据库。

因此,您只需要更改视图的一部分以包含此语句,如下所示:

if request.method == "POST":
    form = EmployeeForm(request.POST)
    if form.is_valid():
        try:
            form.save()
            return redirect('/')
        except:
            pass
© www.soinside.com 2019 - 2024. All rights reserved.