Django
1.Django简介
1.1 Django简介
Django是一个高级的PythonWeb框架它鼓励快速开发和干净、实用的设计。由经验丰富的开发者构建,它解决了Web开发中的许多麻烦,因此你可以专注于编写应用而无需重新发明轮子。
Django遵循MTV(模型-模板-视图)设计模式
模型(Model) :定义数据结构,通常与数据库交互。
模板(Template) :定义用户界面的外观和感觉。
视图(View) :处理业务逻辑和数据呈现。
2.Django基础
2.1 Django安装
pip install Django
安装完成后,通过以下命令确定Django安装版本
django-admin --version
2.2 Django项目结构
经典的Django项目结构如下
myproject/
    manage.py
    myproject/
        __init__.py
        admin.py
        apps/
            __init__.py
            models.py
        forms.py
        migrations/
            __init__.py
            apps.py
            models.py
        static/
         templates/
         urls.py
         views.py
    myapp/
        __init__.py
        admin.py
        apps.py
        models.py
        views.py
- manage.py:Django项目的入口脚本,用于运行开发服务器、管理数据库迁移等。
- myproject/:项目的包名,通常与项目名相同。
- urls.py:项目的URL配置。
- views.py:处理请求的视图函数。
- apps/:Django应用的目录,可以包含多个应用。
- models.py:定义模型和数据库表。
- static/:存放静态文件,如CSS、JavaScript和图片。
- templates/:存放HTML模板。
2.3 视图与url路由
URL路由是将Web请求映射到Django视图的规则。在Django中,URL路由在urls.py文件中定义。每个URL模式都指定了一个视图函数。以下是一个简单的URL路由配置示例:
from django.urls import path
from . import views
urlpatterns = [
    path('hello/', views.hello, name='hello'),
    # ...其他URL
]
2.4 数据模型与ORM
Django的模型是Python类,它们映射到数据库表。Django的ORM(对象关系映射)系统允许你用Python类和属性来表示数据库表和关系。
以下是一个简单的数据模型示例:
from django.db import models
class User(models.Model):
    username = models.CharField(max_length=100)
    email = models.EmailField()
class Post(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=200)
    content = models.TextField()
在上面的代码中,User和Post类分别代表了用户和博客文章的数据模型。User类有一个username字段和一个email字段,而Post
类有一个author字段(外键),一个title字段和一个content字段。
2.5 数据迁移
2.5.1 Django迁移到数据库
当你创建一个Django应用并定义模型后,Django会自动为你生成数据库迁移脚本,你可以使用manage.py来执行这些迁移,以在数据库中创建相应的表。
# 生成迁移文件
python manage.py makemigrations
# 将迁移文件同步到数据库
python manage.py migrate
2.5.2 数据库到Django
但是当你数据库中已经有建立好的数据表时,需要使用以下命令来迁移数据
这个会将你数据库中的已有表结构,保存到models.py中
python manage.py inspectdb 学生表1> models.py
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号