软件:Pycharm2020
Python:python3.7.5
Django:django3.0.8
数据库:mysql5.7.30
github链接 https://github.com/yt-xy/Django-student
输出 Hello World!
views.py
from django.shortcuts import render
def index(request):
words = 'World!'
return render(request, 'index.html', context={'words': words})
templates/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学员管理系统</title>
</head>
<body>
Hello {{ words }}
</body>
</html>
urls.py
from django.conf.urls import url
from django.contrib import admin
from stu.views import index
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^$', index, name='index'),
]
再次启动项目,进入 http://127.0.0.1:8000 即可看到 Hello World!
输出数据
views.py
from django.shortcuts import render
from .models import Student
def index(request):
students = Student.objects.all()
return render(request, 'index.html', context={'students': students})
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学员管理系统</title>
</head>
<body>
<ul>
{% for student in students %}
<li>{{ student.name }} - {{ student.get_status_display }}</li>
{% endfor %}
</ul>
</body>
</html>
提交数据
forms.py
from django import forms
from .models import Student
class StudentForm(forms.Form):
name = forms.CharField(label='姓名', max_length=128)
sex = forms.ChoiceField(label='性别', choices=Student.SEX_ITEMS)
profession = forms.CharField(label='职业', max_length=128)
email = forms.EmailField(label='邮箱', max_length=128)
qq = forms.CharField(label='QQ', max_length=128)
phone = forms.CharField(label='手机', max_length=128)
可修改为:
class StudentForm(forms.ModelForm):
def clean_qq(self):
cleaned_data = self.cleaned_data['qq']
if not cleaned_data.isdigit():
raise forms.ValidationError('必须是数字!')
return int(cleaned_data)
class Meta:
model = Student
fields = (
'name', 'sex', 'profession',
'email', 'qq', 'phone'
)
views.py
from django.http import HttpResponseRedirect
from django.shortcuts import render
from django.urls import reverse
from .forms import StudentForm
from .models import Student
def index(request):
students = Student.objects.all()
if request.method == 'POST':
form = StudentForm(request.POST)
if form.is_valid():
cleaned_data = form.cleaned_data
student = Student()
student.name = cleaned_data['name']
student.sex = cleaned_data['sex']
student.email = cleaned_data['email']
student.profession = cleaned_data['profession']
student.qq = cleaned_data['qq']
student.phone = cleaned_data['phone']
student.save()
return HttpResponseRedirect(reverse('index'))
else:
form = StudentForm()
context = {
'students': students,
'form': form,
}
return render(request, 'index.html', context=context)
可修改为:
def index(request):
students = Student.objects.all()
if request.method == 'POST':
form = StudentForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect(reverse('index'))
else:
form = StudentForm()
context = {
'students': students,
'form': form,
}
return render(request, 'index.html', context=context)
现在就可以添加数据并在前端页面显示了>.<