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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值