任务描述:实现表单提交(上传文件)
1.项目目录:
2.源代码:
regist.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>regist</title>
</head>
<body>
<h3>regist</h3>
<hr>
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{uf.as_p}}
<input type="submit" value="submit">
</form>
</body>
</html>
views.py
from django.shortcuts import render
from django import forms
import sqlite3
from . import models
class UserForm(forms.Form):
username = forms.CharField(max_length=100)
headimg = forms.FileField()
def insert(user):
# 连接数据保存
print('insert:')
print(user.username)
models.User.objects.create(username=user.username, headimg=user.headimg)
return True
def regist(request):
context = {}
if request.method == 'POST':
uf = UserForm(request.POST, request.FILES)
if uf.is_valid():
username = uf.cleaned_data['username']
headimg = uf.cleaned_data['headimg']
user = models.User(username=username, headimg=headimg.name)
print(user.username)
# save headimg
fp = open('upload/' + headimg.name, 'wb')
s = headimg.read()
fp.write(s)
fp.close()
if insert(user):
return render(request, 'regist_ok.html', context)
else:
uf = UserForm()
context = {'uf': uf}
return render(request, 'regist.html', context)
urls.py
from django.conf.urls import url
from django.contrib import admin
from user import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'user/regist/', views.regist),
]
3.admin管理
from django.contrib import admin
from . import models
# Register your models here.
class UserAdmin(admin.ModelAdmin):
# 设置显示的字段
list_display = ("username", "headimg")
admin.site.register(models.User, UserAdmin)
4.运行测试