Django是一个高级的PythonWeb应用框架,可以快速开发安全和可维护的网站。

Django遵循一种称为MTV(模型-模板-视图)模式的架构模式。

创建一个django项目

1,vscode安装 “python”扩展

2,创建一个 django项目

# 新增一个文件夹 djangoDemo
cd djangoDemo

# 虚拟环境env
python -m venv env

#激活虚拟环境
.\env\Scripts\activate

# 安装 django
pip install django

# 利用 django创建项目
django-admin startproject [项目名]

# 运行开发服务
cd [项目名]
python manage.py runserver

浏览器输入 http://127.0.0.1:8000/ 可以打开页面代表创建成功

了解目录

demo
|----demon
|      |---- _pycache_
|      |---- _init_.py // 表示这个目录属于python模块
|      |---- asgi.py // 异步功能
|      |---- settings.py // web服务器所需要的设置,比较重要
|      |---- urls.py  
|      |---- wsgi.py
|----demo_app
|      |---- _pycache_
|      |---- migations // 数据库架构的一个记录
|      |---- templates // 存放html文件
|      |---- _init_.py // 表示这个目录属于python模块
|      |---- admin.py // django 后台管理
|      |---- apps.py // 不需要管
|      |---- models.py // 数据库数据表相关
|      |---- tests.py // 运行测试程序
|      |---- views.py // 处理逻辑返回http response
|----manage.py // 项目的根目录

创建app

python manage.py startapp [app名称]

在demo>settings.py中添加我们新增的 app

安装postgreSQL

1,安装postgreSQL数据库:https://www.postgresql.org/,并将bin目录添加到系统环境变量中;

2,psycopg2 是一个用于 Python 的 PostgreSQL 数据库驱动程序。在使用 Django 中的 PostgreSQL 数据库前,需要先安装 psycopg2

pip install psycopg2

3, 在 settings.py中设置数据库配置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres', // 安装postgresql默认的数据库名称
        'USER': 'postgres', //安装postgresql默认的user名称
        'PASSWORD': '123456', // 应该是安装postgresql的时候自己设置的密码
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

在settings.py文件中完成postgreSQL数据库配置后,需要以命令形式同步数据库,在根目录下执行命令:

python manage.py makemigrations

python manage.py migrate

创建 demo_app model

# demo_project -> urls.py 有个admin路径
浏览器输入:http://127.0.0.1:8000/admin 打开一个后台登录页

# 创建一个管理员账户
python manage.py createsuperuser
# demo_app -> models.py 创建有个Todo数据表,有2个字段(name,due_date),

class Todo(models.Model):
    name = models.CharField(max_length=100)
    due_date = models.DateField()

    // 对name做处理
    def __str__(self):
        return self.name

# demo_app -> admin.py 讲models.py新增的Todo,添加到后台管理页面中
from .models import Todo
admin.site.register(Todo)

# 同步数据库
python manage.py makemigrations
python manage.py migrate

创建 demo_app views/urls/tempaltes

# demo_app -> views.py # 处理逻辑返回 http response

from django.http import HttpResponse
def todo_list(request):
    return HttpResponse('todo list')

# demo -> urls.py
urlpatterns = [
    path('', todo_list), # 在 根目录 路径下下使用 todo_list函数处理
]

页面显示 “todo list”
# demo_app -> views.py

from django.shortcuts import render
def todo_list(request):
    return render(request, 'todo_list.html')

# demo_app -> templates 文件夹新建一个 todo_list.html
<html>
    <head>
        <title>Todo List</title>
    </head>
    <body>
        <h1>todo_list.html</h1>
    </body>
</html>

页面显示 “todo_list.html”的内容

创建全局 html文件

1,在项目的跟目录下 新建 templates 文件夹,里面新增todo_list.html文件
<html>
    <head>
        <title>Todo List</title>
    </head>
    <body>
        <h1>全局 todo_list.html</h1>
    </body>
</html>

2,demo -> settings.py
import os

BASE_DIR = Path(__file__).resolve().parent.parent # 获取当前文件所在目录

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')], # 当前文件所在目录下的 templates 目录
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

    

Django 模板语法

templates 文件夹里面存放 html文件,可以在html文件显示response 返回的数据

{% if condition %} # 条件判断
{% if not condition %} # 否定条件判断
{% for item in list %}	# 循环遍历
{{ variable }}	# 输出变量值
{% endif %}, {% endfor %}	# 结束标签

例如:
<html>
    <head>
        <title>Todo List</title>
    </head>
    <body>
        {% if not request.user.is_authenticated %} 
        <h1>您好,{{request.user.username}}还未登录</h1>
        {% else %}
            <h2>{{request.user.username}}的Todo:</h2>
            <ul>
                {% for todo in todo_list %}
                <li>{{ todo.name }},截至时间 {{todo.due_date}}</li>
                {% endfor %}
            </ul>
        {% endif %}
    </body>
</html>

其他

# 用户对象特性
request.user.is_authenticated # 判断用户是否登录 返回 Boolean
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐