学员管理系统前台开发

学员管理系统前台开发

1.首页开发

在student/views.py文件编写以下代码

from django.shortcuts import render
def index(request):
    words='World!'
    return render(request,'index.html',context={'words':words})#使用render来渲染页面,index.html是模板文件,在student目录下创建templates文件夹,该文件夹是Django在渲染页面时默认查找的

django在渲染模板或静态页面时,会去每个app下查找(就是setting.py文件中配置的INSTALLED_APPS中的APP,django会去这些APP的目录下的templates文件夹查找在render上用到的模板,并且是顺序查找)

在student目录下创建完temlates文件夹后,创建index.html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>学员管理系统</title>
</head>
<body>
  Hello {{  words  }}!
</body>
</html>

{{ words }}是django模板语法,意思是从上下文获取到words变量,该变量是在index中调用render传递

模板路径需要在setttings.py配置,具体见报错解决。

然后配置urls.py

from django.contrib import admin
from django.urls import path
from student.views import index

urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/',index),
]

访问http://127.0.0.1:8000/index即可看到hello world!

 2.输出数据

修改views.py

from django.shortcuts import render
from .models import Student
def index(request):
    students=Student.objects.all()#拿到Student模型中的所有student 数据
    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>

其中student,get_status.display是因为status设置的是choices字段,Django会提供该方法来获取这个字段对应要展示的值

3.提交数据

创建一个跟view.py 同级的forms.py文件

from  django import forms
from .models import Student
class StudentForm(forms.ModelForm):
    def clean_qq(self):#Form会自动调用来处理每个字段(检验qq)
        cleand_data=self.clean_data['qq']#clean_data是从前端拿到的数据
        if not cleand_data.isdigit():
            raise forms.ValidationError('必须是数字!')
        return int(cleand_data)
    class Meta:
        model=Student
        fields={
            'name','sex','profession','email','qq','phone'#这些字段和Student里的字段一样,直接复用Student里的代码
        }

views.py

from django.shortcuts import render
from .models import Student
from .forms import StudentForm


def index(request):
    students=Student.objects.all()#拿到Student模型中的所有student 数据
    if request.method=='POST':
        form =StudentForm(request.POST)
        if form.is_valid():#检验其是否是有效的对象
            form.save()#根据用户提交的表单创建Student对象
         
    else:
        form =StudentForm()
    context={
        'students':students,
        'form':form,
    }
    return render(request,'index.html',context=context)

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>学员管理系统</title>
</head>
<body>
<h3><a href="/admin/">admin</a></h3>
   <ul>
      {% for student in students %}
       <li>{{ student.name }}-{{ student.get_status_display }}</li>
      {% endfor %}
   </ul>
  <hr/>
   <form action="/" method="post">
       {% csrf_token %}
       {{ form }}
       <input type="submit" value="Submit"/>

   </form>
</body>
</html>

其中{%csrf_token%}是django对提交数据安全性做的校验,如没有则提交的数据无效

猜你喜欢

转载自www.cnblogs.com/python-road/p/12905533.html
今日推荐