您好,登录后才能下订单哦!
# Django框架的搭建步骤
## 一、Django简介与环境准备
### 1.1 Django框架概述
Django是一个基于Python的高级Web框架,遵循MVT(Model-View-Template)设计模式。其主要特点包括:
- 自带ORM(对象关系映射)
- 自动化管理后台
- 完善的URL路由系统
- 内置模板引擎
- 强调DRY(Don't Repeat Yourself)原则
### 1.2 环境要求
在开始搭建前需确保:
- Python 3.6+(推荐3.8+)
- pip包管理工具
- 虚拟环境工具(推荐venv或virtualenv)
```bash
# 检查Python版本
python --version
# 检查pip版本
pip --version
# 使用venv创建虚拟环境(Windows)
python -m venv myenv
# 激活环境
myenv\Scripts\activate
# macOS/Linux
python3 -m venv myenv
source myenv/bin/activate
pip install django
# 验证安装
python -m django --version
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 看到欢迎页面即表示成功
python manage.py startapp myapp
生成的应用结构:
myapp/
__init__.py
admin.py
apps.py
migrations/
models.py
tests.py
views.py
修改myproject/settings.py
:
INSTALLED_APPS = [
...
'myapp.apps.MyappConfig',
]
默认使用SQLite,如需更改(如MySQL):
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydatabase',
'USER': 'root',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '3306',
}
}
需额外安装对应数据库驱动:
pip install mysqlclient # 对于MySQL
编辑myapp/models.py
:
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
pub_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
python manage.py makemigrations
输出示例:
Migrations for 'myapp':
myapp/migrations/0001_initial.py
- Create model Article
python manage.py migrate
python manage.py createsuperuser
编辑myapp/admin.py
:
from django.contrib import admin
from .models import Article
admin.site.register(Article)
启动服务后访问: http://127.0.0.1:8000/admin
编辑myapp/views.py
:
from django.shortcuts import render
from .models import Article
def article_list(request):
articles = Article.objects.all()
return render(request, 'articles/list.html', {'articles': articles})
创建模板目录结构:
myapp/
templates/
articles/
list.html
示例模板list.html
:
<!DOCTYPE html>
<html>
<head>
<title>文章列表</title>
</head>
<body>
<h1>所有文章</h1>
<ul>
{% for article in articles %}
<li>{{ article.title }} - {{ article.pub_date }}</li>
{% endfor %}
</ul>
</body>
</html>
urls.py
:from django.urls import path
from . import views
urlpatterns = [
path('', views.article_list, name='article_list'),
]
urls.py
中包含应用路由:from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('articles/', include('myapp.urls')),
]
修改settings.py
:
STATIC_URL = '/static/'
STATICFILES_DIRS = [BASE_DIR / "static"]
项目根目录下创建static
文件夹,结构示例:
static/
css/
style.css
js/
main.js
images/
{% load static %}
<link rel="stylesheet" href="{% static 'css/style.css' %}">
<script src="{% static 'js/main.js' %}"></script>
新建forms.py
:
from django import forms
from .models import Article
class ArticleForm(forms.ModelForm):
class Meta:
model = Article
fields = ['title', 'content']
from django.shortcuts import redirect, render
from .forms import ArticleForm
def create_article(request):
if request.method == 'POST':
form = ArticleForm(request.POST)
if form.is_valid():
form.save()
return redirect('article_list')
else:
form = ArticleForm()
return render(request, 'articles/create.html', {'form': form})
create.html
示例:
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">提交</button>
</form>
Django已内置认证系统,确保settings.py
包含:
INSTALLED_APPS = [
...
'django.contrib.auth',
'django.contrib.contenttypes',
]
MIDDLEWARE = [
...
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
]
from django.contrib.auth import authenticate, login
def user_login(request):
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return redirect('article_list')
return render(request, 'registration/login.html')
<form method="post">
{% csrf_token %}
<input type="text" name="username" placeholder="用户名">
<input type="password" name="password" placeholder="密码">
<button type="submit">登录</button>
</form>
修改settings.py
:
DEBUG = False
ALLOWED_HOSTS = ['yourdomain.com', 'localhost']
python manage.py collectstatic
常见选项: - Apache + mod_wsgi - Nginx + Gunicorn - Docker容器化部署 - 云平台(如AWS、Azure)
通过以上步骤,我们完成了Django项目从环境搭建到基础功能实现的完整流程。实际开发中还需考虑: 1. 安全性配置(CSRF防护、XSS防护等) 2. 性能优化(缓存、数据库索引等) 3. REST API开发(可结合Django REST framework) 4. 异步任务处理(Celery等)
建议参考Django官方文档(https://docs.djangoproject.com)获取最新最佳实践。 “`
注:本文实际约2100字,可根据需要扩展以下内容: 1. 中间件配置示例 2. 缓存机制实现 3. 测试用例编写 4. 国际化配置 5. 具体部署方案详解
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。