一个中等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',
]
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>
- 运行开发服务器
启动Django开发服务器:
python manage.py runserver 0.0.0.0:8000
在浏览器中访问http://192.168.2.101/blog/
,应该会看到一个显示所有博客文章的页面。
重点和难点
- 模型和数据库迁移:定义模型后,必须创建和应用迁移。这是管理数据库模式的关键步骤,可能会出现迁移冲突或错误。
- URL配置:正确配置URL路径,使得不同应用的URL不冲突,需要注意路径的包含和命名空间。
- 模板系统:正确设置模板目录和文件,并在视图中正确渲染模板。需要确保模板路径和名称正确。
- 视图和查询集:在视图中处理查询集,并将数据传递给模板渲染。处理复杂查询可能会影响性能,需要优化查询。
- Admin后台配置:注册模型以便在Admin后台管理数据,这对于调试和管理数据非常有帮助。
通过以上步骤,可以创建和启动一个基本的Django应用。
标签:__,配置文件,示例,models,py,中型,Django,blog,模板 From: https://www.cnblogs.com/aiparallelworld/p/18212956