当前位置: 首页 > news >正文

PyCharm+Django开发攻略

PyCharm 与 Django 开发环境配置

在 PyCharm 中配置 Django 项目非常简单。打开 PyCharm 后选择 "New Project",在左侧菜单中选择 "Django"。指定项目路径并选择 Python 解释器。PyCharm 会自动创建 Django 项目结构并安装必要依赖。

# 创建虚拟环境(可选但推荐) python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows # 安装 Django pip install django

Django 项目结构解析

PyCharm 创建的 Django 项目包含标准结构:

  • manage.py: Django 命令行工具
  • settings.py: 项目配置
  • urls.py: URL 路由配置
  • wsgi.py: WSGI 应用入口
# 示例:查看项目结构 tree -L 2 . ├── db.sqlite3 ├── manage.py └── myproject ├── __init__.py ├── asgi.py ├── settings.py ├── urls.py └── wsgi.py

创建 Django 应用

在 PyCharm 终端中运行以下命令创建新应用:

python manage.py startapp myapp

应用目录结构:

myapp/ ├── admin.py # 管理员界面配置 ├── apps.py # 应用配置 ├── models.py # 数据模型 ├── tests.py # 测试用例 └── views.py # 视图函数

模型定义示例

# myapp/models.py from django.db import models class Product(models.Model): name = models.CharField(max_length=100) price = models.DecimalField(max_digits=10, decimal_places=2) description = models.TextField() created_at = models.DateTimeField(auto_now_add=True) def __str__(self): return self.name

视图函数编写

# myapp/views.py from django.shortcuts import render from .models import Product def product_list(request): products = Product.objects.all() return render(request, 'products/list.html', {'products': products}) def product_detail(request, pk): product = Product.objects.get(pk=pk) return render(request, 'products/detail.html', {'product': product})

URL 路由配置

# myproject/urls.py from django.contrib import admin from django.urls import path from myapp import views urlpatterns = [ path('admin/', admin.site.urls), path('products/', views.product_list, name='product_list'), path('products/<int:pk>/', views.product_detail, name='product_detail'), ]

模板系统使用

创建模板目录结构:

myapp/ └── templates/ └── products/ ├── list.html └── detail.html

示例模板代码:

<!-- list.html --> {% for product in products %} <div> <h2>{{ product.name }}</h2> <p>Price: ${{ product.price }}</p> <a href="{% url 'product_detail' pk=product.pk %}">View details</a> </div> {% endfor %}

Django 管理界面配置

# myapp/admin.py from django.contrib import admin from .models import Product @admin.register(Product) class ProductAdmin(admin.ModelAdmin): list_display = ('name', 'price', 'created_at') search_fields = ('name', 'description') list_filter = ('created_at',)

数据库迁移

在 PyCharm 终端中运行:

python manage.py makemigrations python manage.py migrate

运行开发服务器

PyCharm 提供了便捷的运行配置。也可以手动启动:

python manage.py runserver

调试技巧

PyCharm 提供了强大的 Django 调试支持:

  1. 设置断点
  2. 创建 Django Server 运行配置
  3. 使用调试模式启动
# 调试示例 def complex_calculation(): import pdb; pdb.set_trace() # PyCharm 会自动捕获 # 或使用断点功能

测试用例编写

# myapp/tests.py from django.test import TestCase from .models import Product class ProductTestCase(TestCase): def setUp(self): Product.objects.create(name="Test Product", price=9.99) def test_product_creation(self): product = Product.objects.get(name="Test Product") self.assertEqual(product.price, 9.99)

静态文件处理

settings.py中配置:

STATIC_URL = '/static/' STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

创建静态文件目录:

static/ ├── css/ │ └── style.css └── js/ └── app.js

REST API 开发示例

安装 DRF (Django REST Framework):

pip install djangorestframework

创建序列化器:

# myapp/serializers.py from rest_framework import serializers from .models import Product class ProductSerializer(serializers.ModelSerializer): class Meta: model = Product fields = '__all__'

创建 API 视图:

# myapp/views.py from rest_framework import generics from .models import Product from .serializers import ProductSerializer class ProductListAPI(generics.ListCreateAPIView): queryset = Product.objects.all() serializer_class = ProductSerializer class ProductDetailAPI(generics.RetrieveUpdateDestroyAPIView): queryset = Product.objects.all() serializer_class = ProductSerializer

部署准备

生产环境设置建议:

# settings.py DEBUG = False ALLOWED_HOSTS = ['yourdomain.com'] STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

收集静态文件:

python manage.py collectstatic

性能优化技巧

  1. 使用select_relatedprefetch_related减少查询
  2. 启用缓存
  3. 使用 Django Debug Toolbar 分析性能
# 优化查询示例 products = Product.objects.select_related('category').prefetch_related('tags')

安全最佳实践

  1. 使用 HTTPS
  2. 设置SECRET_KEY安全
  3. 防范 CSRF 攻击
  4. 使用 Django 的内置安全中间件
# settings.py SECURE_SSL_REDIRECT = True SESSION_COOKIE_SECURE = True CSRF_COOKIE_SECURE = True
http://www.cnnetsun.cn/news/1463621.html

相关文章:

  • Kivy+Buildozer 打包 APK 踩坑:python-for-android 克隆失败
  • 漫画脸描述生成详细步骤:生成结果导入Stable Diffusion ControlNet
  • 大数据毕业设计论文选题效率提升指南:从选题到原型的标准化流水线
  • 如何用Vulkan计算着色器深度检测GPU显存健康度
  • ESP32+Micropython实战:手把手教你用OLED ssd1306显示自定义中文(附字库工具)
  • EPro-PnP:端到端概率PnP算法的技术解析与实践指南
  • 最优化建模算法实践:Goldstein准则在MATLAB中的高效实现与性能对比
  • 别再只盯着PDB了!手把手教你用Pymol展示自己解析的晶体密度图(CCP4/FFT转换避坑指南)
  • 零代码玩转OpenClaw:nanobot预设技能调用指南
  • 马斯克公布250亿美元Terafab芯片制造项目
  • 在proteus软件上建立STM32仿真工程
  • 人机协作新范式:2026 最新降AIGC软件测评与推荐
  • 3分钟解决机械键盘连击问题:Keyboard Chatter Blocker终极指南
  • AI检测率太高论文过不了?这4个降AIGC网站2026年必须用!
  • Elasticsearch集群分片数超限?3种方法快速定位并解决性能瓶颈
  • MiniCPM-V-2_6模型服务化:使用Docker Compose编排高可用API服务
  • 中山大学LaTeX论文模板:学术文档工程化实战指南
  • mysql自动备份与还原
  • AI殉情记录员:见证模型为爱集体删除——软件测试视角下的警示与反思
  • RVC变声器完整实战指南:从零到专业级语音克隆的5大核心技巧
  • Qwen2.5-1.5B Streamlit部署案例:为盲人用户定制的语音合成+对话导航集成方案
  • Retinaface+CurricularFace镜像功能体验:一键检测最大人脸并比对
  • 5步深度定制foobar2000:foobox-cn专业DUI配置实战指南
  • Chat TTS 模型下载实战:从选型到生产环境部署的完整指南
  • Goland跨平台编译实战:Windows环境下的GOOS与GOARCH配置指南
  • Python JSON 操作指南:4 个核心方法一文吃透
  • SMARTWAV音频协处理器底层驱动与实时FFT开发指南
  • Qwen-Image-Edit-F2P人脸生成教程:多角度人像生成策略与camera参数模拟技巧
  • Python入门实战:10行代码调用卡证检测矫正模型API
  • mebeats技术实现:Go语言驱动的小米手环实时心率采集系统架构解析