You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Django中通过表单添加记录时创建带ID的桌面空目录求完整代码

Django 模型创建时同步生成桌面空目录解决方案

核心逻辑

在表单验证通过并保存数据库记录后,利用Python的os模块创建指定目录,这里采用跨平台兼容的桌面路径,同时处理目录已存在的情况避免报错。


完整代码文件

1. models.py(修正原文件多余代码)

from django.db import models

class DosyaBilgileri(models.Model):
    sahisAdi = models.CharField(max_length=50, verbose_name='Şahıs Adı')

    def __str__(self):
        return self.sahisAdi

2. forms.py(新增ModelForm定义,新手易遗漏)

from django.forms import ModelForm
from .models import DosyaBilgileri

class DosyaBilgileriModelForm(ModelForm):
    class Meta:
        model = DosyaBilgileri
        fields = ['sahisAdi']

3. views.py(修改视图添加目录创建逻辑)

from django.shortcuts import render, redirect
from django.contrib import messages
import os
from .forms import DosyaBilgileriModelForm

def delilIndex(request): 
    dosyaEkleFormu = DosyaBilgileriModelForm(request.POST or None)
    if dosyaEkleFormu.is_valid():
        # 保存数据库记录
        dosya_kaydi = dosyaEkleFormu.save()
        
        # 获取跨平台桌面路径
        masaustu_yolu = os.path.expanduser("~/Desktop")
        # 用记录的sahisAdi作为目录名,替换空格避免路径问题
        klasor_adi = dosya_kaydi.sahisAdi.replace(" ", "_")
        tam_klasor_yolu = os.path.join(masaustu_yolu, klasor_adi)
        
        # 创建目录,exist_ok=True允许目录已存在
        os.makedirs(tam_klasor_yolu, exist_ok=True)
        
        messages.add_message(request, messages.INFO, 'Dosya ekleme ve klasör oluşturma işlemi tamamlandı.')
        return redirect('delilIndex')

    return render(request, 'delil/index.html', {'dosyaEkleFormu': dosyaEkleFormu })

4. 模板文件 templates/delil/index.html

<!DOCTYPE html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <title>Dosya Ekle</title>
</head>
<body>
    <h2>Yeni Dosya Bilgisi Ekle</h2>
    {% if messages %}
        {% for msg in messages %}
            <p style="color: green;">{{ msg }}</p>
        {% endfor %}
    {% endif %}
    <form method="POST">
        {% csrf_token %}
        {{ dosyaEkleFormu.as_p }}
        <button type="submit">Kaydet ve Klasör Oluştur</button>
    </form>
</body>
</html>

关键注意事项

  • 确保项目settings.py中已启用messages框架(默认配置已包含,无需额外修改)
  • 生产环境不建议直接操作服务器桌面,应改用项目专用存储目录(如MEDIA_ROOT下的子目录)
  • 若需处理更复杂的特殊字符(如土耳其语特殊字符),可对klasor_adi做进一步转义处理

内容的提问来源于stack exchange,提问作者upizney

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 15:30:59