Django中型项目的目录结构和一个应用创建启动示例
1.Django应用创建到启动的简单示例
2.Django中型项目的目录结构和一个应用创建启动示例
3.Ubungu+Django简单项目创建代码全4.Django+Vue构建前后端分离开发模式5.Django和MySQL与Vue项目之间的数据是如何流动实现交互响应的6.Django项目中关于静态文件的引用7.Django+nginx+静态网站8.Django项目中Ajax的应用,博客分类文章阅读,左右栏目自动更新9.Ajax代码运行前应该先加载jQuery10.关于css选择器和样式表的应用11.Django项目中使用markdown语法12.关于静态文件目录与模板引用和Nginx location块的适配设置13.html中javascript点击事件后显示或隐藏某些元素时需要点击两次才生效的原因分析和优化14.Flask与Django返回json数据的等价方法一个中等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应用的创建启动为例,说明其中涉及的重点和难点
- 创建项目和应用
首先,确保已经激活了虚拟环境,并在项目目录下。
source /home/lyh/django/venv/bin/activate
django-admin startproject djangoweb
cd djangoweb
python manage.py startapp blog
- 项目结构
此时的目录结构如下:
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
- 配置应用
在djangoweb/settings.py
文件中,添加blog
到INSTALLED_APPS
列表中:
INSTALLED_APPS = [
...
'blog',
]
- 创建模型
在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
- 创建和应用迁移
创建数据库迁移并应用:
python manage.py makemigrations blog
python manage.py migrate
- 注册模型到Admin后台
在blog/admin.py
中注册模型:
from django.contrib import admin
from .models import Post
admin.site.register(Post)
- 创建视图
在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})
- 创建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')),
]
- 创建模板
在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>
- 运行开发服务器
启动Django开发服务器:
python manage.py runserver 0.0.0.0:8000
在浏览器中访问http://192.168.2.101/blog/
,应该会看到一个显示所有博客文章的页面。
重点和难点
- 模型和数据库迁移:定义模型后,必须创建和应用迁移。这是管理数据库模式的关键步骤,可能会出现迁移冲突或错误。
- URL配置:正确配置URL路径,使得不同应用的URL不冲突,需要注意路径的包含和命名空间。
- 模板系统:正确设置模板目录和文件,并在视图中正确渲染模板。需要确保模板路径和名称正确。
- 视图和查询集:在视图中处理查询集,并将数据传递给模板渲染。处理复杂查询可能会影响性能,需要优化查询。
- Admin后台配置:注册模型以便在Admin后台管理数据,这对于调试和管理数据非常有帮助。
通过以上步骤,可以创建和启动一个基本的Django应用。
合集:
Python Web
标签:
django项目示例
, python web
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具