Django学习笔记(2)

这篇具有很好参考价值的文章主要介绍了Django学习笔记(2)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

创建app

Django学习笔记(2),web开发,django,学习,笔记,python,html
属于自动执行了python manage.py
直接在里面运行startapp app01就可以创建app01的项目了
之后在setting.py中注册app01

INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    'app01.apps.App01Config'
]

创建表

class Department(models.Model):
    """部门表"""
    id=models.BigAutoField(verbose_name="ID",primary_key=True)#系统默认自己创建
    title=models.CharField(verbose_name="标题(备注)",max_length=32)

class UserInfo(models.Model):
    name=models.CharField(verbose_name="姓名",max_length=16)
    password=models.CharField(verbose_name="密码",max_length=64)
    age=models.IntegerField(verbose_name="年龄")
    account=models.DecimalField(verbose_name="账户余额",max_digits=10,decimal_places=2,default=0)
    #10位数字,小数位是2
    create_time=models.DateTimeField(verbose_name="入职时间")
    #to表示与哪张表相连
    #to_fields表示与哪一列相连
    #写depart后Django会自动生成depart_id
    #on_delete=models.CASCADE级联删除
    #置空删除on_delete=models.SET_NULL
    depart=models.ForeignKey(to="Department",to_field="id",on_delete=models.CASCADE)

其中用户中加入部门数据,如果是正常开始用ID,对于特别大的公司用字符串名称,这样可以防止连表的时间消耗,属于用空间换时间。

Django学习笔记(2),web开发,django,学习,笔记,python,html

部门列表

###前端页面
Django学习笔记(2),web开发,django,学习,笔记,python,html

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="{% static 'plugins/bootstrap-3.4.1/css/bootstrap.min.css' %}">
    <style>
        .navbar{
            border-radius: 0;
        }
    </style>
</head>
<body>

<nav class="navbar navbar-default">
  <div class="container-fluid">
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#">联通用户管理系统</a>
    </div>

    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
      <ul class="nav navbar-nav">
        <li><a href="#">Link</a></li>
      </ul>
      <ul class="nav navbar-nav navbar-right">
        <li><a href="#">Link</a></li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
          <ul class="dropdown-menu">
            <li><a href="#">Action</a></li>
            <li><a href="#">Another action</a></li>
            <li><a href="#">Something else here</a></li>
            <li role="separator" class="divider"></li>
            <li><a href="#">Separated link</a></li>
          </ul>
        </li>
      </ul>
    </div><!-- /.navbar-collapse -->
  </div><!-- /.container-fluid -->
</nav>


<srcipt src="{% static 'js/jquery-3.6.0.min.js' %}"></srcipt>
<srcipt src="{% static 'plugins/bootstrap-3.4.1/js/bootstrap.min.js' %}"></srcipt>
</body>
</html>

上面的导航栏代码在导航栏代码中找到的,加入后修改成上面的部分,记得最上面加入{% load static %}。
Django学习笔记(2),web开发,django,学习,笔记,python,html

<div>
    <div class="container">
        <div style = "margin-bottom: 10px">
            <a class="btn btn-primary" href="">新建部门</a>

        </div>

        <div class="panel panel-default">
      <!-- Default panel contents -->
      <div class="panel-heading">Panel heading</div>
      <!-- Table -->
      <table class="table table-bordered">
        <thead>
          <tr>
            <th>#</th>
            <th>First Name</th>
            <th>Last Name</th>
            <th>Username</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <th scope="row">1</th>
            <td>Mark</td>
            <td>Otto</td>
            <td>@mdo</td>
          </tr>
          <tr>
            <th scope="row">2</th>
            <td>Jacob</td>
            <td>Thornton</td>
            <td>@fat</td>
          </tr>
          <tr>
            <th scope="row">3</th>
            <td>Larry</td>
            <td>the Bird</td>
            <td>@twitter</td>
          </tr>
        </tbody>
      </table>
    </div>
    </div>
</div>

Django学习笔记(2),web开发,django,学习,笔记,python,html

新增

在depart_list中增加跳转地址

<a class="btn btn-primary" href="/depart/add/" >
{#              target="_blank"  在新的页面产生#}
                <span class="glyphicon glyphicon-plus-sign" aria-hidden="true"></span>
                新建部门</a>

新建一个depart_add.html

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="{% static 'plugins/bootstrap-3.4.1/css/bootstrap.min.css' %}">
    <style>
        .navbar{
            border-radius: 0;
        }
    </style>
</head>
<body>
<nav class="navbar navbar-default">
  <div class="container"><!--改为居中-->
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#">联通用户管理系统</a>
    </div>

    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
      <ul class="nav navbar-nav">
        <li><a href="/depart/list/">部门管理</a></li>
      </ul>
      <ul class="nav navbar-nav navbar-right">
        <li><a href="#">登录</a></li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">刘世鹏<span class="caret"></span></a>
          <ul class="dropdown-menu">
            <li><a href="#">个人资料</a></li>
            <li><a href="#">我的信息</a></li>
            <li><a href="#">Something else here</a></li>
            <li role="separator" class="divider"></li>
            <li><a href="#">注销</a></li>
          </ul>
        </li>
      </ul>
    </div><!-- /.navbar-collapse -->
  </div><!-- /.container-fluid -->
</nav>

<div>
    <div class="panel panel-default">
  <div class="panel-heading">
    <h3 class="panel-title">新建面板</h3>
  </div>
  <div class="panel-body">
      <form>
      <div class="form-group">
        <label for="exampleInputEmail1">标题</label>
        <input type="text" class="form-control" id="exampleInputEmail1" placeholder="标题" name="title">
      </div>
      <button type="submit" class="btn btn-primary">保存</button>
    </form>
      
  </div>
</div>
</div>
<srcipt src="{% static 'js/jquery-3.6.0.min.js' %}"></srcipt>
<srcipt src="{% static 'plugins/bootstrap-3.4.1/js/bootstrap.min.js' %}"></srcipt>
</body>
</html>

在表单中增加post修改的方式

<form method="post">
  {% csrf_token %}
  <div class="form-group">
    <label for="exampleInputEmail1">标题</label>
    <input type="text" class="form-control" id="exampleInputEmail1" placeholder="标题" name="title">
  </div>
  <button type="submit" class="btn btn-primary">保存</button>
</form>

添加后端代码

def depart_add(request):
    "'添加部门'"
    if request.method=="GET":
        return render(request,"depart_add.html")
    #获取post中的数据
    title=request.POST.get("title")
    models.Department.objects.create(title=title)

    return redirect("/depart/list")

修改部门

在urls.py中采用

    path("depart/<int:nid>/edit/",views.depart_edit)

的路径方法

def depart_edit(request,nid):
    if request.method=="GET":
        queryset=models.Department.objects.filter(id=nid)
        title=queryset.first().title
        return render(request,"depart_edit.html",{"title":title})
    title2=request.POST.get("title")
    models.Department.objects.filter(id=nid).update(title=title2)
    return redirect("/depart/list")

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="{% static 'plugins/bootstrap-3.4.1/css/bootstrap.min.css' %}">
    <style>
        .navbar{
            border-radius: 0;
        }
    </style>
</head>
<body>
<nav class="navbar navbar-default">
  <div class="container"><!--改为居中-->
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#">联通用户管理系统</a>
    </div>

    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
      <ul class="nav navbar-nav">
        <li><a href="/depart/list">部门管理</a></li>
      </ul>
      <ul class="nav navbar-nav navbar-right">
        <li><a href="#">登录</a></li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">刘世鹏<span class="caret"></span></a>
          <ul class="dropdown-menu">
            <li><a href="#">个人资料</a></li>
            <li><a href="#">我的信息</a></li>
            <li><a href="#">Something else here</a></li>
            <li role="separator" class="divider"></li>
            <li><a href="#">注销</a></li>
          </ul>
        </li>
      </ul>
    </div><!-- /.navbar-collapse -->
  </div><!-- /.container-fluid -->
</nav>

<div>
    <div class="panel panel-default">
  <div class="panel-heading">
    <h3 class="panel-title">修改面板</h3>
  </div>
  <div class="panel-body">
      <form method="post">
          {% csrf_token %}
      <div class="form-group">
        <label for="exampleInputEmail1">标题
        </label>
        <input type="text" class="form-control" id="exampleInputEmail1" placeholder="标题" name="title" value="{{ title }}">
      </div>
      <button type="submit" class="btn btn-primary">保存</button>
    </form>

  </div>
</div>
</div>
<srcipt src="{% static 'js/jquery-3.6.0.min.js' %}"></srcipt>
<srcipt src="{% static 'plugins/bootstrap-3.4.1/js/bootstrap.min.js' %}"></srcipt>
</body>
</html>

模板继承

创建一个模板网页,把需要重复的部分放进模板layout.html中,使用{% block content %} {% endblock %}编写其他需要改写的地方,其中content是变量名

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="{% static 'plugins/bootstrap-3.4.1/css/bootstrap.min.css' %}">
    <style>
        .navbar{
            border-radius: 0;
        }
    </style>
</head>
<body>

<nav class="navbar navbar-default">
  <div class="container"><!--改为居中-->
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#">联通用户管理系统</a>
    </div>

    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
      <ul class="nav navbar-nav">
        <li><a href="/depart/list">部门管理</a></li>
      </ul>
      <ul class="nav navbar-nav navbar-right">
        <li><a href="#">登录</a></li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">刘世鹏<span class="caret"></span></a>
          <ul class="dropdown-menu">
            <li><a href="#">个人资料</a></li>
            <li><a href="#">我的信息</a></li>
            <li><a href="#">Something else here</a></li>
            <li role="separator" class="divider"></li>
            <li><a href="#">注销</a></li>
          </ul>
        </li>
      </ul>
    </div><!-- /.navbar-collapse -->
  </div><!-- /.container-fluid -->
</nav>

<div>
    {%  block content %}

     {% endblock %}
</div>
<srcipt src="{% static 'js/jquery-3.6.0.min.js' %}"></srcipt>
<srcipt src="{% static 'plugins/bootstrap-3.4.1/js/bootstrap.min.js' %}"></srcipt>
</body>
</html>

例如编辑网页中更改成如下

{% extends "layout.html" %}

{% block content %}
    <div>
    <div class="panel panel-default">
  <div class="panel-heading">
    <h3 class="panel-title">修改面板</h3>
  </div>
  <div class="panel-body">
      <form method="post">
          {% csrf_token %}
      <div class="form-group">
        <label for="exampleInputEmail1">标题
        </label>
        <input type="text" class="form-control" id="exampleInputEmail1" placeholder="标题" name="title" value="{{ title }}">
      </div>
      <button type="submit" class="btn btn-primary">保存</button>
    </form>

  </div>
</div>
</div>

{% endblock %}

用户管理

在创建user_list.html后,在其中加入后端的数据,需要一些函数的支持,但是模板语法不支持函数()的,所以需要进行省略括号的写法,但是对于一些传参的函数就需要进行改写

{{ obj.create_time|date:“Y-m-d H:i:s” }}是obj.create_time.strftime(‘%Y-%m-%d %H:%M:%S’)的改写

obj.get_gender_display()在前端中的模板语法去掉括号就行了。

总体界面

{% extends "layout.html" %}

{% block content %}

<div>
    <div class="container">
        <div style = "margin-bottom: 10px">
            <a class="btn btn-primary" href="/user/add/" >
{#              target="_blank"  在新的页面产生#}
                <span class="glyphicon glyphicon-plus-sign" aria-hidden="true"></span>
                新建用户
            </a>
        </div>
        <div class="panel panel-default">
      <!-- Default panel contents -->
      <div class="panel-heading"><span class="glyphicon glyphicon-th-list" aria-hidden="true"> 用户管理</span></div>
      <!-- Table -->
      <table class="table table-bordered">
        <thead>
          <tr>
            <th>#</th>
            <th>ID</th>
            <th>姓名</th>
            <th>年龄</th>
           <th>工资</th>
           <th>入职时间</th>
           <th>性别</th>
           <th>部门</th>
              <th>操作</th>
          </tr>
        </thead>
        <tbody>
        {% for obj in queryset %}
        <tr>
            <th scope="row">{{ obj.id }}</th>
            <td>{{ obj.id }}</td>
            <td>{{ obj.name }}</td>
            <td>{{ obj.age }}</td>
            <td>{{ obj.account }}</td>
            <td>{{ obj.create_time|date:"Y-m-d" }}</td>
{#            obj.create_time.strftime('%Y-%m-%d %H:%M:%S')#}
            <td>{{ obj.get_gender_display }}
{#                模板语法中不能加括号,所以有函数的也不需要加括号#}
            </td>
            <td>{{ obj.depart.title }}</td>
            <td>
                <a class = "btn btn-primary btn-xs" href="/user/{{ obj.id }}/edit/">编辑</a>
                <a class = "btn btn-danger btn-xs" href="/user/delete/?nid={{ obj.id }}">删除</a>
            </td>
        </tr>
        {% endfor %}
        </tbody>
      </table>
    </div>
    </div>
</div>

{% endblock %}

后端

def user_list(request):
    queryset=models.UserInfo.objects.all()
    print(type(queryset))
    for obj in queryset:
        print(obj.name,obj.age,obj.account,obj.get_gender_display(),obj.password,obj.create_time.strftime('%Y-%m-%d %H:%M:%S'))
    return render(request,"user_list.html",{"queryset":queryset})

Django学习笔记(2),web开发,django,学习,笔记,python,html

新建用户

传统方法

{% extends "layout.html" %}

{% block content %}
<div>
    <div class="panel panel-default">
  <div class="panel-heading">
    <h3 class="panel-title">新建面板</h3>
  </div>
  <div class="panel-body" >
      <form method="post">
          {% csrf_token %}
      <div class="form-group">
        <label>姓名
        </label>
        <input type="text" class="form-control" placeholder="姓名" name="name" >
          <label>年龄
         </label>
        <input type="text" class="form-control" placeholder="年龄" name="age" >
          <label>工资
          </label>
        <input type="text" class="form-control" placeholder="工资" name="account" >
          <label>性别
          </label>
        <input type="text" class="form-control" placeholder="性别" name="gender" >
          <label>所属部门ID
          </label>
        <input type="text" class="form-control" placeholder="所属部门ID" name="depart_id" >
          <label>密码
          </label>
        <input type="text" class="form-control" placeholder="密码" name="password" >
      </div>
      <button type="submit" class="btn btn-primary">保存</button>
    </form>

  </div>
</div>
</div>

{% endblock %}

def user_add(request):
    if request.method=="GET":
        return render(request,"user_add.html")
    name=request.POST.get("name")
    age = request.POST.get("age")
    account = request.POST.get("account")
    gender = request.POST.get("gender")
    depart_id = request.POST.get("depart_id")
    password = request.POST.get("password")
    create_time=time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
    models.UserInfo.objects.create(name=name,age=age,account=account,
                                   gender=gender,password=password,
                                   create_time=create_time,
                                   depart_id=depart_id)
    return redirect("/user/list/")

Django学习笔记(2),web开发,django,学习,笔记,python,html

改进

  • 用户提交的数据没有校验
  • 错误的页面上应该有错误的提示
  • 每一个字段都需要重写一遍
  • 关联的数据需要手动展示在前端页面
    采用Django组件
    Form组件
    ModelForm组件

ModelForm 组件

class UserModelForm(forms.ModelForm):
    class Meta:
        model=models.UserInfo
        fields=["name","age","account","gender","depart","password"]
def user_modelform_add(request):
    """modelForm版本的添加用户"""
    form=UserModelForm()
    return render(request,"user_add_modelform.html",{"form":form})
{% extends "layout.html" %}

{% block content %}
<div>
    <div class="panel panel-default">
  <div class="panel-heading">
    <h3 class="panel-title">新建面板</h3>
  </div>
  <div class="panel-body" >
      <form method="post">
          {% csrf_token %}
      {% for field in form %}
          {{ field.label }}:{{ field }}<br>
          {% endfor %}
      <button type="submit" class="btn btn-primary">保存</button>
    </form>

  </div>
</div>
</div>

{% endblock %}

Django学习笔记(2),web开发,django,学习,笔记,python,html
但是其中部门是下面这样的

Django学习笔记(2),web开发,django,学习,笔记,python,html
利用重写Department类的方法__str__()

class Department(models.Model):
    """部门表"""
    id=models.BigAutoField(verbose_name="ID",primary_key=True)#系统默认自己创建
    title=models.CharField(verbose_name="标题(备注)",max_length=32)
    def __str__(self):
        return self.title

Django学习笔记(2),web开发,django,学习,笔记,python,html

{% extends "layout.html" %}

{% block content %}
<div>
    <div class="panel panel-default">
  <div class="panel-heading">
    <h3 class="panel-title">新建面板</h3>
  </div>
  <div class="panel-body" >
      <form method="post">
          {% csrf_token %}

      {% for field in form %}
          <div class="form-group">
         <label> {{ field.label }}
          </label>
          {{ field  }}
          </div>
          {% endfor %}

      <button type="submit" class="btn btn-primary">保存</button>
    </form>

  </div>
</div>
</div>

{% endblock %}

Django学习笔记(2),web开发,django,学习,笔记,python,html

加上样式

class UserModelForm(forms.ModelForm):
    class Meta:
        model=models.UserInfo
        fields=["name","age","account","gender","depart","password","create_time"]
        # widgets={
        #     "name":forms.TextInput(attrs={"class":"form-control"}),
        #     "age": forms.TextInput(attrs={"class": "form-control"}),
        #     "account": forms.TextInput(attrs={"class": "form-control"}),
        #     "gender": forms.TextInput(attrs={"class": "form-control"}),
        #     "depart": forms.TextInput(attrs={"class": "form-control"}),
        # }
    def __init__(self,*args,**kwargs):
        super().__init__(*args,**kwargs)
        for name,field in self.fields.items():
            if name=="create_time":
                field.widget.attrs={"class":"form-control","value":time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()),}
            else:
                field.widget.attrs={"class":"form-control","placeholder":field.label}

Django学习笔记(2),web开发,django,学习,笔记,python,html

后端中进行保存

def user_modelform_add(request):
    """modelForm版本的添加用户"""
    if request.method=="GET":
        form=UserModelForm()
        return render(request,"user_add_modelform.html",{"form":form})
    #进行数据校验
    form=UserModelForm(data=request.POST)
    if form.is_valid():
        form.save()#将提交的数据自动保存
        print(form.cleaned_data)
        return redirect("/user/list/")
    else:
        print(form.errors)
        return render(request,"user_add_modelform.html",{"form":form})

在前端中加入{{ field.errors.0 }}可以显示错误信息
Django学习笔记(2),web开发,django,学习,笔记,python,html
在setting.py中改成LANGUAGE_CODE = "zh-hans"便可以变成中文

Django学习笔记(2),web开发,django,学习,笔记,python,html

编辑

def user_edit(request,nid):
    row_object = models.UserInfo.objects.filter(id=nid).first()
    if request.method=="GET":
        form=UserModelForm(instance=row_object)
        return render(request,"user_edit.html",{"form":form})
    form=UserModelForm(data=request.POST,instance=row_object)
    if form.is_valid():
        form.save()
        return redirect("/user/list/")
    return render(request, "user_edit.html", {"form": form})
{% extends "layout.html" %}

{% block content %}
<div class="container">
<div>
    <div class="panel panel-default">
  <div class="panel-heading">
    <h3 class="panel-title">新建面板</h3>
  </div>
  <div class="panel-body" >
      <form method="post" novalidate>
          {% csrf_token %}

      {% for field in form %}
          <div class="form-group">
         <label> {{ field.label }}
          </label>
          {{ field  }}
              <span style="color: red">{{ field.errors.0 }}</span>

          </div>
          {% endfor %}

      <button type="submit" class="btn btn-primary">保存</button>
    </form>

  </div>
</div>
</div>

</div>
{% endblock %}

Django学习笔记(2),web开发,django,学习,笔记,python,html文章来源地址https://www.toymoban.com/news/detail-656189.html

删除

def user_delete(request):
    nid=request.GET.get("nid")
    models.UserInfo.objects.filter(id=nid).delete()
    return redirect("/user/list/")

到了这里,关于Django学习笔记(2)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python Web开发:Django与Flask框架

    Django和Flask都是Python中非常受欢迎的Web开发框架。虽然它们都是用于构建Web应用程序的工具,但它们在设计理念、使用方式和适用场景等方面存在一些差异。 Django Django是一个“大而全”的框架,遵循MVC设计模式。它内置了很多功能,如ORM(对象关系映射)、模板引擎、表单处

    2024年02月22日
    浏览(52)
  • python的web学习(一)-初识django

    软件 python下载 django下载 创建项目 默认项目文件说明 项目名 manage.py (项目管理,启动项目,创建app,数据管理)(不要动)(常常用) 项目名 __init__.py settings.py (项目配置文件)(常用修改) urls.py (URL和python函数的对应关系)(常用修改) asgi.py (接收网络请求,开发者基本不需要进行修改

    2024年02月15日
    浏览(33)
  • Django:用于轻松安全 Web 开发的高级 Python Web 框架

    Django是一种高级 Python Web 框架,近年来在开发人员中广受欢迎。Django 专注于简单性、安全性和可扩展性,使开发人员可以轻松构建和部署强大的 Web 应用程序。在这份综合指南中,我们将仔细研究是什么让 Django 成为 Web 开发的绝佳选择,并详细探讨其主要特性和功能。 1. 安

    2024年02月15日
    浏览(51)
  • Python Web开发记录 Day7:Django(Web框架) part 1

    名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 创作者:Code_流苏(CSDN) (一个喜欢古诗词和编程的Coder😊) 在当今迅速发展的互联网时代,开发高效、安全且可扩展的网站变得越来越重要。Python语言因其简洁的语法和强大的功能而广受欢迎,而Django则是P

    2024年03月11日
    浏览(66)
  • 一个月学通Python(十八):Django表单的应用(Web开发)

    结合自身经验和内部资料总结的Python教程,每天3章,1个月就能全方位的完成Python的学习并进行实战开发,学完了定能成为大佬!加油吧!卷起来! 全部文章请访问专栏:《Python全栈教程(0基础)》 我们继续来完成上一章节中的项目,实现“用户注册”和“用户登录”的功

    2024年02月16日
    浏览(59)
  • 基于Django的Python应用——学习笔记

    环境:Python3.11           Django5.0.1 为项目新建一个目录,将其命名为 learning_log ,再在终端中切换到这个目录,并创建一个虚拟环境。 项目列表生成了这样的一个文件夹 控制台前方出现高亮即为成功 在依然处于活动的虚拟环境的情况下( ll_env 包含在括号内),执行如下命

    2024年02月21日
    浏览(75)
  • 基于Django的Python应用—学习笔记—功能完善

    创建基于表单的页面的方法几乎与前面创建网页一样:定义一个 URL ,编写一个视图函数并编写一个模板。一个主要差别是,需要导入包含表单 的模块forms.py 。 edit_entry.html new_entry.html new_topic.html

    2024年01月20日
    浏览(41)
  • Python学习笔记_进阶篇(三)_django知识(二)

    本章内容 Django model django默认支持sqlite,mysql, oracle,postgresql数据库。 1 sqlite django默认使用sqlite的数据库,默认自带sqlite的数据库驱动 引擎名称:django.db.backends.sqlite3 2mysql 引擎名称:django.db.backends.mysql 1、配置文件中sqlite 2、配置文件中mysql 注:由于Django内部连接MySQL时使用的

    2024年02月12日
    浏览(41)
  • Python学习笔记_进阶篇(二)_django知识(一)

    本章简介: Django 简介 Django 基本配置 Django url Django view Django 模板语言 Django Form Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的。并于

    2024年02月12日
    浏览(46)
  • Python学习笔记_进阶篇(四)_django知识(三)

    本章内容: Django 发送邮件 Django cookie Django session Django CSRF 我们常常会用到一些发送邮件的功能,比如有人提交了应聘的表单,可以向HR的邮箱发邮件,这样,HR不看网站就可以知道有人在网站上提交了应聘信息。今天我们尝试用django发送邮件做尝试 1、配置相关参数settings 往

    2024年02月11日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包