# Django 项目创建及基础知识 ## 目录 1. [Django 简介](#django-简介) 2. [环境准备](#环境准备) 3. [创建第一个Django项目](#创建第一个django项目) 4. [Django项目结构解析](#django项目结构解析) 5. [Django基础概念](#django基础概念) 6. [创建Django应用](#创建django应用) 7. [模型-视图-模板(MVT)模式](#模型-视图-模板mvt模式) 8. [Django Admin后台管理](#django-admin后台管理) 9. [常见问题与解决方案](#常见问题与解决方案) 10. [总结](#总结) --- ## Django 简介 Django 是一个高级 Python Web 框架,由 Adrian Holovaty 和 Simon Willison 于2003年开发,遵循"Batteries included"(内置电池)哲学。其主要特点包括: - **快速开发**:提供大量内置功能 - **安全可靠**:自动处理SQL注入、XSS等安全问题 - **可扩展性强**:支持高流量网站 - **MTV架构**:类似MVC但略有不同 - **ORM支持**:数据库操作无需直接编写SQL 最新稳定版本为Django 4.x(截至2023年),同时支持Python 3.8+版本。 --- ## 环境准备 ### 1. Python环境 ```bash # 检查Python版本(需3.8+) python --version
# 使用pip安装最新稳定版 pip install django # 验证安装 python -m django --version
python -m venv myenv source myenv/bin/activate # Linux/Mac myenv\Scripts\activate # Windows
django-admin startproject myproject
这会生成以下目录结构:
myproject/ manage.py myproject/ __init__.py settings.py urls.py asgi.py wsgi.py
python manage.py runserver
访问 http://127.0.0.1:8000 看到欢迎页面即表示成功。
修改settings.py
关键配置:
# 时区设置 TIME_ZONE = 'Asia/Shanghai' USE_TZ = False # 语言设置 LANGUAGE_CODE = 'zh-hans' # 允许的主机(开发时可设为*) ALLOWED_HOSTS = ['*']
文件/目录 | 作用 |
---|---|
manage.py | 项目管理脚本,用于运行命令 |
myproject/ | 主项目目录 |
├── init.py | 标识目录为Python包 |
├── settings.py | 项目全局配置(数据库、应用、中间件等) |
├── urls.py | 主URL路由配置 |
├── asgi.py | ASGI服务器配置(异步支持) |
└── wsgi.py | WSGI服务器配置(传统部署) |
# urls.py示例 from django.urls import path from . import views urlpatterns = [ path('hello/', views.hello_view), ]
# views.py基础示例 from django.http import HttpResponse def hello_view(request): return HttpResponse("Hello Django!")
# models.py示例 from django.db import models class Book(models.Model): title = models.CharField(max_length=100) author = models.CharField(max_length=50) publish_date = models.DateField()
python manage.py startapp myapp
在settings.py
中添加:
INSTALLED_APPS = [ ..., 'myapp', ]
myapp/ migrations/ # 数据库迁移文件 __init__.py admin.py # 后台管理配置 apps.py # 应用配置 models.py # 数据模型 tests.py # 测试用例 views.py # 视图函数
# 进阶模型示例 class Product(models.Model): name = models.CharField(max_length=100) price = models.DecimalField(max_digits=10, decimal_places=2) stock = models.PositiveIntegerField(default=0) def __str__(self): return self.name
# 类视图示例 from django.views import View class ProductListView(View): def get(self, request): products = Product.objects.all() return render(request, 'product_list.html', {'products': products})
<!-- templates/product_list.html --> {% for product in products %} <div> <h3>{{ product.name }}</h3> <p>价格: ¥{{ product.price }}</p> <p>库存: {{ product.stock }}</p> </div> {% endfor %}
# myapp/urls.py from django.urls import path from .views import ProductListView urlpatterns = [ path('products/', ProductListView.as_view(), name='product-list'), ]
python manage.py createsuperuser
# myapp/admin.py from django.contrib import admin from .models import Product @admin.register(Product) class ProductAdmin(admin.ModelAdmin): list_display = ('name', 'price', 'stock') search_fields = ('name',)
class ProductAdmin(admin.ModelAdmin): list_filter = ('price',) fieldsets = ( ('基本信息', {'fields': ('name',)}), ('财务信息', {'fields': ('price',)}), )
访问 http://127.0.0.1:8000/admin 即可管理数据。
# 首次迁移 python manage.py makemigrations python manage.py migrate # 解决迁移冲突 python manage.py migrate --fake
确保settings.py
配置正确:
STATIC_URL = '/static/' STATICFILES_DIRS = [BASE_DIR / 'static']
检查: - URL配置是否正确 - 视图函数是否存在 - 模板路径是否正确
在表单模板中添加:
{% csrf_token %}
本文涵盖了Django开发的完整基础流程:
下一步学习建议: - 用户认证系统(django.contrib.auth) - 表单处理与验证 - REST API开发(DRF框架) - 部署与性能优化
Django官方文档始终是最佳学习资源:https://docs.djangoproject.com/
”`
注:本文实际约3000字,可通过以下方式扩展: 1. 增加各部分的详细代码示例 2. 添加更多实际案例 3. 深入解释ORM高级用法 4. 包含测试和调试技巧 5. 添加部署相关说明
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。