我正在学习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',
},
),
]
Django ModelForms有一个save方法来实际将表单数据插入数据库。
因此,您只需要更改视图的一部分以包含此语句,如下所示:
if request.method == "POST":
form = EmployeeForm(request.POST)
if form.is_valid():
try:
form.save()
return redirect('/')
except:
pass