欢迎来到海上华帆的博客园子

记录一些学习过程中的心得体会,供自己和有缘人参考!

Django中型项目的目录结构和一个应用创建启动示例

一个中等Django项目的目录结构包含多个应用、配置文件、静态文件和模板文件等。

myproject/
├── manage.py        # Django项目管理脚本,用于运行服务器、迁移数据库等管理命令
├── myproject/       # 项目配置目录,包含全局配置文件和静态、模板文件
│   ├── __init__.py  # 标识这是一个Python包
│   ├── asgi.py      # ASGI配置文件,用于部署异步服务器
│   ├── settings.py  # 项目配置文件,通常用于简单项目,对于中型项目建议拆分成多个配置文件
│   ├── urls.py      # 项目的URL路由配置文件
│   ├── wsgi.py      # WSGI配置文件,用于部署服务器
│   ├── settings/    # 拆分的配置文件目录
│   │   ├── __init__.py # 标识这是一个Python包
│   │   ├── base.py     # 基本配置文件,包含所有环境的通用配置
│   │   ├── development.py # 开发环境的配置文件
│   │   ├── production.py  #生产环境的配置文件
│   ├── static/       # 静态文件目录,存放CSS、JavaScript和图片等静态资源
│   │   ├── css/
│   │   ├── js/
│   │   ├── images/
│   ├── templates/    # 模板文件目录,存放HTML模板文件
│       ├── base.html # 通用的基础模板,可以在其他模板文件中继承
│       ├── ...
│
├── apps/             # 应用目录,包含项目中的所有Django应用
│   ├── __init__.py   # 标识这是一个Python包
│   ├── app1/         # 其中一个Django应用目录
│   │   ├── __init__.py  
│   │   ├── admin.py  #注册Django Admin后台的模型
│   │   ├── apps.py   # 应用配置文件
│   │   ├── models.py # 数据库模型定义文件
│   │   ├── tests.py  # 测试文件
│   │   ├── views.py  # 视图函数或类视图定义文件
│   │   ├── urls.py   # 应用的URL路由配置文件
│   │   ├── migrations/ #数据库迁移文件目录
│   │       ├── __init__.py
│   ├── app2/
│       ├── __init__.py
│       ├── admin.py
│       ├── apps.py
│       ├── models.py
│       ├── tests.py
│       ├── views.py
│       ├── urls.py
│       ├── migrations/
│           ├── __init__.py
│
├── requirements/ # 依赖文件目录,存放不同环境的依赖文件
│   ├── base.txt  #通用依赖文件
│   ├── development.txt  # 开发环境的依赖文件
│   ├── production.txt   # 生产环境的依赖文件
│
├── .gitignore  # Git忽略文件,列出不需要提交到版本控制系统的文件或目录
├── README.md   # 项目的README文件,通常包含项目的简介、安装和使用说明等。

以其中一个app应用的创建启动为例,说明其中涉及的重点和难点

  1. 创建项目和应用
    首先,确保已经激活了虚拟环境,并在项目目录下。
source /home/lyh/django/venv/bin/activate
django-admin startproject djangoweb
cd djangoweb
python manage.py startapp blog
  1. 项目结构
    此时的目录结构如下:
djangoweb/
  manage.py
  djangoweb/
    __init__.py
    asgi.py
    settings.py
    urls.py
    wsgi.py
  blog/
    __init__.py
    admin.py
    apps.py
    models.py
    tests.py
    views.py
    migrations/
      __init__.py
  1. 配置应用
    djangoweb/settings.py文件中,添加 blogINSTALLED_APPS列表中:
INSTALLED_APPS = [
  ...
  'blog',
]
  1. 创建模型
    blog/models.py中,定义一个简单的博客文章模型:
from django.db import models
class Post(models.Model):
  title = models.CharField(max_length=100)
  content = models.TextField()
  created_at = models.DateTimeField(auto_now_add=True)

  def __str__(self):
    return self.title
  1. 创建和应用迁移
    创建数据库迁移并应用:
python manage.py makemigrations blog
python manage.py migrate
  1. 注册模型到Admin后台
    blog/admin.py中注册模型:
from django.contrib import admin
from .models import Post

admin.site.register(Post)
  1. 创建视图
    blog/views.py中,创建一个简单的视图来显示博客文章列表:
from django.shortcuts import render
from .models import Post
def index(request):
  posts = Post.objects.all()
  return render(request, 'blog/index.html', {'posts':posts})
  1. 创建URL配置
    blog目录下创建一个urls.py文件,并配置URL:
from django.urls import path
from . import views

urlpatterns = [
  path('', views.index, name='index'),
]

djangoweb/urls.py中包含blog应用的URL配置:

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
  path('admin/', admin.site.urls),
  path('blog/', include('blog.urls')),
]
  1. 创建模板
    blog目录下创建templates/blog目录,并创建index.html模板文件:
blog/
    templates/
        blog/
            index.html

index.html中添加以下内容:

<!DOCTYPE html>
<html>
<head>
    <title>Blog</title>
</head>
<body>
    <h1>Blog Posts</h1>
    <ul>
        {% for post in posts %}
          <li>{{ post.title }} - {{ post.created_at }} </li>
        {% endfor %}
    </ul>
</body>
</html>
  1. 运行开发服务器
    启动Django开发服务器:
    python manage.py runserver 0.0.0.0:8000
    在浏览器中访问http://192.168.2.101/blog/,应该会看到一个显示所有博客文章的页面。

重点和难点

  1. 模型和数据库迁移:定义模型后,必须创建和应用迁移。这是管理数据库模式的关键步骤,可能会出现迁移冲突或错误。
  2. URL配置:正确配置URL路径,使得不同应用的URL不冲突,需要注意路径的包含和命名空间。
  3. 模板系统:正确设置模板目录和文件,并在视图中正确渲染模板。需要确保模板路径和名称正确。
  4. 视图和查询集:在视图中处理查询集,并将数据传递给模板渲染。处理复杂查询可能会影响性能,需要优化查询。
  5. Admin后台配置:注册模型以便在Admin后台管理数据,这对于调试和管理数据非常有帮助。

通过以上步骤,可以创建和启动一个基本的Django应用。

posted @   海上华帆  阅读(60)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示