首页 > 其他分享 >Django中型项目的目录结构和一个应用创建启动示例

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

时间:2024-05-25 20:11:04浏览次数:18  
标签:__ 配置文件 示例 models py 中型 Django blog 模板

一个中等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',
]
4. 创建模型
在`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

5. 创建和应用迁移
创建数据库迁移并应用:

python manage.py makemigrations blog
python manage.py migrate

6. 注册模型到Admin后台
在`blog/admin.py`中注册模型:

from django.contrib import admin
from .models import Post

admin.site.register(Post)

7. 创建视图
在`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})

8. 创建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')),
]

9. 创建模板
在`blog`目录下创建`templates/blog`目录,并创建`index.html`模板文件:

blog/
templates/
blog/
index.html

在`index.html`中添加以下内容:
```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应用。

标签:__,配置文件,示例,models,py,中型,Django,blog,模板
From: https://www.cnblogs.com/aiparallelworld/p/18212956

相关文章

  • 基于python+django框架旅游景区景点购票系统设计与实现(源码+LW+安装+基础课)
     博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。项目配有对应开发文档、开题报告、任务书、P......
  • Django应用创建到启动的简单示例
    一、系统环境和前置安装Ubuntu系统192.168.2.101,客户端192.168.2.100python3及虚拟环境管理库python3-venv创建项目文件创建djangoweb项目配置ALLOW_HOSTS=['*']二、创建并注册app创建django-adminstartappapp1注册app修改项目配置文件settings.py,在INSTALLED_APPS......
  • 在excel中使用python 快速作图示例
    前言Excel中可以使用python算是一个旧闻了,是python之父GuidovanRossum加入微软的重要产品。刚出来的第一时间我也尝鲜了,最近作图的时候,再次使用了这个功能,感觉非常方便,推荐大家也用一下。优点:Python在云端运行,无需部署环境。可以编写脚本来自动化日常的Excel任务......
  • Django验证码配置与使用
    在用户注册、登录页面,为了防止暴力请求,可以加入验证码功能,如果验证码错误,则不需要继续处理,可以减轻一些服务器的压力使用验证码也是一种有效的防止crsf的方法需要安装扩展:pipinstallpillow验证码效果如下图:验证码视图新建viewsUtil.py,定义函数verifycode此段代码用到了PIL......
  • Django模板层之模板语法
    1.变量变量输出语法{{var}}当模版引擎遇到一个变量,将计算这个变量,然后将结果输出变量名必须由字母、数字、下划线(不能以下划线开头)和点组成当模版引擎遇到点("."),会按照下列顺序查询:字典查询,例如:foo["bar"]属性或方法查询,例如:foo.bar数字索引查询,例如:foo[bar]如......
  • Django视图层——2HttpReqeust对象&QueryDict对象
    HttpReqeust对象服务器接收到http协议的请求后,会根据报文创建HttpRequest对象视图函数的第一个参数是HttpRequest对象在django.http模块中定义了HttpRequest对象的API属性下面除非特别说明,属性都是只读的path:一个字符串,表示请求的页面的完整路径,不包含域名method:......
  • 视频聊天源码,同步、异步示例代码分析
    视频聊天源码,同步、异步示例代码分析同步示例代码:console.log("开始");functionsyncOperation(){console.log("同步操作");}syncOperation();console.log("结束"); 输出结果:开始同步操作结束 在上述代码中,同步操作syncOperation()按照顺序......
  • 三菱works3模块化技巧1-上一篇的程序示例
    1上一页,下一页对应HMI上的增减按钮,默认100页,从0开始,范围做一个限制2根据上一篇讲到的,每页8个阀门,对应16个控制和16个反馈,可以用M也可以用D,这里拿M举例3通过页数的变化来做清零4通过循环指令,预留16个名称更改,通过D100Z1变址寄存器实现,对应的序号通过Z2,只需在HMI中新......
  • Amesim示例篇-案例1:空间中的铝块散热
    前言本文将通过一个案例继续对Thermal库的元件进一步讲解。案例1:一个300mm*300mm*1000mm(长*宽*高)的铝板初始温度为45℃,竖直在环境为25℃的空间内静置60min。对流换热系数设置为5W/m2·K。本文将通过两种建模方法对铝块的温度变化进行对比。假设,铝块底部与地面接触为绝热,通过......
  • Django数据库查询
    一、DjangoORM(对象关系映射)进行数据库查询操作    示例模型:fromdjango.dbimportmodelsfromdatetimeimportdatetime,timedeltaclassFruitModel(models.Model):create_time=models.DateTimeField(auto_now_add=datetime.now())update_time=......