一、表单
Django的表单系统帮助开发者创建HTML表单,验证用户输入的数据,并重新显示表单,包括任何验证错误。
创建表单:通过继承django.forms.Form或django.forms.ModelForm(用于基于模型创建表单)来创建表单。
字段:表单由字段组成,如CharField、EmailField、ChoiceField等。
验证:表单提供验证功能,可以在字段级别或表单级别进行验证。
渲染:表单可以自动渲染为HTML,也可以手动定制渲染方式。
# forms.py
from django import forms
class MyForm(forms.Form):
name = forms.CharField(label='Your name', max_length=100)
email = forms.EmailField(label='Your email', required=True)
二、访问SQLite数据库
Django支持多种数据库,包括SQLite。SQLite是一个轻量级的文件型数据库,适合开发和小型应用。
设置:在settings.py中配置数据库设置,使用SQLite时,只需指定数据库文件的路径。
模型 (Models):定义数据模型,即数据库表的结构。
查询集 (QuerySets):Django使用查询集来表示从数据库中获取的对象集合。
ORM:Django的ORM(对象关系映射)允许开发者使用Python代码来查询和操作数据库。
# models.py
from django.db import models
class Blog(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
pub_date = models.DateTimeField('date published')
# views.py
from django.shortcuts import render
from .models import Blog
def blog_list(request):
blogs = Blog.objects.all()
return render(request, 'blog_list.html', {'blogs': blogs})
三、通用视图 (Generic Views)
Django提供了许多通用视图,可以简化常见的Web开发任务,如列表显示、详情查看、创建、更新和删除对象等。
ListView:显示对象列表。
DetailView:显示对象的详细信息。
CreateView、UpdateView、DeleteView:分别用于创建、更新和删除对象。
FormView 和 ModelFormView:用于处理表单。
# views.py
from django.views import generic
from .models import Blog
class BlogDetailView(generic.DetailView):
model = Blog
template_name = 'blog_detail.html'
# urls.py
from django.urls import path
from . import views
urlpatterns = [
path('blog//', views.BlogDetailView.as_view(), name='blog-detail'),
]
四、文件上传
Django可以轻松处理文件上传。
表单:使用FileField或ImageField字段在表单中处理文件上传。
视图:在视图中,你可以访问上传的文件对象,并将其保存到服务器的文件系统中或处理它。
设置:需要配置MEDIA_ROOT和MEDIA_URL来指定上传文件的存储位置和URL。
# forms.py
from django import forms
class UploadForm(forms.Form):
document = forms.FileField(label='Upload file')
# views.py
from django.http import HttpResponseRedirect
from django.shortcuts import render
from .forms import UploadForm
from django.core.files.storage import FileSystemStorage
def upload_file(request):
if request.method == 'POST' and request.FILES['document']:
document = request.FILES['document']
fs = FileSystemStorage()
filename = fs.save(document.name, document)
uploaded_file_url = fs.url(filename)
return HttpResponseRedirect(uploaded_file_url)
else:
form = UploadForm()
return render(request, 'upload.html', {'form': form})
五、发送邮件
Django内置了发送电子邮件的功能。
配置:在settings.py中配置电子邮件发送的设置,如SMTP服务器、端口、用户名和密码等。
发送邮件:使用django.core.mail模块中的函数来发送邮件,如send_mail()或send_mass_mail()。
模板:可以使用Django模板来生成邮件的内容,实现动态和个性化的邮件发送。
# views.py
from django.core.mail import send_mail
from django.conf import settings
def send_email(request):
subject = 'Hello from Django'
message = 'This is a test email sent from Django.'
email_from = settings.EMAIL_HOST_USER
recipient_list = ['recipient@example.com']
send_mail(subject, message, email_from, recipient_list)
return HttpResponse('Email sent successfully.')