送你的独白、 2025-08-09 20:41 采纳率: 0%
浏览 14

为什么这个代码没办法运行?


#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import sys
import django
from django.conf import settings
from django.core.management import execute_from_command_line
from django.http import HttpResponse
from django.urls import path
from django.shortcuts import render, redirect, get_object_or_404
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.decorators import login_required
from django.contrib import messages
from django.db.models import Sum, Count
from django.utils import timezone
from django.template import Template, Context

# 配置Django环境
def configure_django():
    if not settings.configured:
        settings.configure(
            DEBUG=True,
            SECRET_KEY='django-insecure-^w5#*+1$s(6k7vx0c4j%!^$q@8u3g&f$1p%j)3l@8!7vx0c4j%',
            ROOT_URLCONF=__name__,
            DATABASES={
                'default': {
                    'ENGINE': 'django.db.backends.sqlite3',
                    'NAME': 'supply_chain.db',
                }
            },
            INSTALLED_APPS=[
                'django.contrib.auth',
                'django.contrib.contenttypes',
                'django.contrib.sessions',
                'django.contrib.messages',
                'django.contrib.staticfiles',
            ],
            MIDDLEWARE=[
                'django.middleware.security.SecurityMiddleware',
                'django.contrib.sessions.middleware.SessionMiddleware',
                'django.middleware.common.CommonMiddleware',
                'django.middleware.csrf.CsrfViewMiddleware',
                'django.contrib.auth.middleware.AuthenticationMiddleware',
                'django.contrib.messages.middleware.MessageMiddleware',
                'django.middleware.clickjacking.XFrameOptionsMiddleware',
            ],
            TEMPLATES=[
                {
                    'BACKEND': 'django.template.backends.django.DjangoTemplates',
                    'DIRS': [],
                    'APP_DIRS': True,
                    'OPTIONS': {
                        'context_processors': [
                            'django.template.context_processors.debug',
                            'django.template.context_processors.request',
                            'django.contrib.auth.context_processors.auth',
                            'django.contrib.messages.context_processors.messages',
                        ],
                    },
                },
            ],
            STATIC_URL='/static/',
            LOGIN_URL='login',
        )
        django.setup()

# 先执行配置,确保Django初始化完成
configure_django()

# 配置完成后再导入模型相关模块
from django.db import models
from django.contrib.auth.models import AbstractUser
from django import forms

# 定义模型
class User(AbstractUser):
    pass

class Supplier(models.Model):
    name = models.CharField(max_length=100)
    contact_person = models.CharField(max_length=100)
    email = models.EmailField()
    phone = models.CharField(max_length=20)
    address = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.name

class Product(models.Model):
    CATEGORY_CHOICES = [
        ('raw', 'Raw Material'),
        ('component', 'Component'),
        ('finished', 'Finished Product'),
    ]
    
    name = models.CharField(max_length=100)
    sku = models.CharField(max_length=50, unique=True)
    description = models.TextField(blank=True)
    category = models.CharField(max_length=20, choices=CATEGORY_CHOICES)
    unit_price = models.DecimalField(max_digits=10, decimal_places=2)
    supplier = models.ForeignKey(Supplier, on_delete=models.SET_NULL, null=True, related_name='products')
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return f"{self.name} ({self.sku})"

class Inventory(models.Model):
    product = models.OneToOneField(Product, on_delete=models.CASCADE, related_name='inventory')
    quantity = models.PositiveIntegerField(default=0)
    low_stock_threshold = models.PositiveIntegerField(default=10)
    last_updated = models.DateTimeField(auto_now=True)

    @property
    def status(self):
        if self.quantity == 0:
            return 'out-of-stock'
        elif self.quantity <= self.low_stock_threshold:
            return 'low-stock'
        return 'in-stock'

    def __str__(self):
        return f"{self.product.name} - {self.quantity} units"

class PurchaseOrder(models.Model):
    STATUS_CHOICES = [
        ('draft', 'Draft'),
        ('pending', 'Pending Approval'),
        ('approved', 'Approved'),
        ('shipped', 'Shipped'),
        ('delivered', 'Delivered'),
        ('cancelled', 'Cancelled'),
    ]
    
    order_number = models.CharField(max_length=20, unique=True)
    supplier = models.ForeignKey(Supplier, on_delete=models.CASCADE, related_name='orders')
    created_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, related_name='orders')
    status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='draft')
    order_date = models.DateTimeField(auto_now_add=True)
    expected_delivery_date = models.DateField()
    notes = models.TextField(blank=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    @property
    def total_value(self):
        return sum(item.total_price for item in self.items.all())

    def __str__(self):
        return f"PO-{self.order_number}"

class PurchaseOrderItem(models.Model):
    order = models.ForeignKey(PurchaseOrder, on_delete=models.CASCADE, related_name='items')
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    quantity = models.PositiveIntegerField()
    unit_price = models.DecimalField(max_digits=10, decimal_places=2)
    
    @property
    def total_price(self):
        return self.quantity * self.unit_price

    def __str__(self):
        return f"{self.product.name} x {self.quantity}"

# 定义表单
class LoginForm(forms.Form):
    username = forms.CharField(
        widget=forms.TextInput(attrs={
            'class': 'form-control',
            'placeholder': 'Username'
        })
    )
    password = forms.CharField(
        widget=forms.PasswordInput(attrs={
            'class': 'form-control',
            'placeholder': 'Password'
        })
    )

class SupplierForm(forms.ModelForm):
    class Meta:
        model = Supplier
        fields = ['name', 'contact_person', 'email', 'phone', 'address']
        widgets = {
            'name': forms.TextInput(attrs={'class': 'form-control'}),
            'contact_person': forms.TextInput(attrs={'class': 'form-control'}),
            'email': forms.EmailInput(attrs={'class': 'form-control'}),
            'phone': forms.TextInput(attrs={'class': 'form-control'}),
            'address': forms.Textarea(attrs={'class': 'form-control', 'rows': 3}),
        }

class ProductForm(forms.ModelForm):
    class Meta:
        model = Product
        fields = ['name', 'sku', 'description', 'category', 'unit_price', 'supplier']
        widgets = {
            'name': forms.TextInput(attrs={'class': 'form-control'}),
            'sku': forms.TextInput(attrs={'class': 'form-control'}),
            'description': forms.Textarea(attrs={'class': 'form-control', 'rows': 3}),
            'category': forms.Select(attrs={'class': 'form-control'}),
            'unit_price': forms.NumberInput(attrs={'class': 'form-control'}),
            'supplier': forms.Select(attrs={'class': 'form-control'}),
        }

class InventoryForm(forms.ModelForm):
    class Meta:
        model = Inventory
        fields = ['product', 'quantity', 'low_stock_threshold']
        widgets = {
            'product': forms.Select(attrs={'class': 'form-control'}),
            'quantity': forms.NumberInput(attrs={'class': 'form-control'}),
            'low_stock_threshold': forms.NumberInput(attrs={'class': 'form-control'}),
        }

class PurchaseOrderForm(forms.ModelForm):
    class Meta:
        model = PurchaseOrder
        fields = ['supplier', 'expected_delivery_date', 'notes']
        widgets = {
            'supplier': forms.Select(attrs={'class': 'form-control'}),
            'expected_delivery_date': forms.DateInput(attrs={'class': 'form-control', 'type': 'date'}),
            'notes': forms.Textarea(attrs={'class': 'form-control', 'rows': 3}),
        }

class PurchaseOrderItemForm(forms.ModelForm):
    class Meta:
        model = PurchaseOrderItem
        fields = ['product', 'quantity', 'unit_price']
        widgets = {
            'product': forms.Select(attrs={'class': 'form-control'}),
            'quantity': forms.NumberInput(attrs={'class': 'form-control'}),
            'unit_price': forms.NumberInput(attrs={'class': 'form-control'}),
        }

# 视图函数
def login_view(request):
    if request.method == 'POST':
        form = LoginForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data['username']
            password = form.cleaned_data['password']
            user = authenticate(request, username=username, password=password)
            if user is not None:
                login(request, user)
                messages.success(request, f"Welcome back, {user.username}!")
                return redirect('dashboard')
        messages.error(request, "Invalid username or password.")
    else:
        form = LoginForm()
    return render(request, 'login.html', {'form': form})

@login_required
def logout_view(request):
    logout(request)
    messages.info(request, "You have been logged out.")
    return redirect('login')

@login_required
def dashboard(request):
    # Inventory summary
    inventory_status = Inventory.objects.values('status').annotate(
        count=Count('id'),
        total_quantity=Sum('quantity')
    )
    
    # Purchase order status
    order_status = PurchaseOrder.objects.values('status').annotate(
        count=Count('id'),
        total_value=Sum('items__total_price')
    )
    
    # Recent orders
    recent_orders = PurchaseOrder.objects.select_related('supplier').order_by('-order_date')[:5]
    
    # Low stock items
    low_stock = Inventory.objects.filter(status='low-stock').select_related('product')[:5]
    
    context = {
        'inventory_status': inventory_status,
        'order_status': order_status,
        'recent_orders': recent_orders,
        'low_stock': low_stock,
    }
    return render(request, 'dashboard.html', context)

# Supplier Views
@login_required
def supplier_list(request):
    suppliers = Supplier.objects.all().order_by('name')
    return render(request, 'suppliers.html', {'suppliers': suppliers})

@login_required
def supplier_create(request):
    if request.method == 'POST':
        form = SupplierForm(request.POST)
        if form.is_valid():
            supplier = form.save()
            messages.success(request, f'Supplier "{supplier.name}" created successfully.')
            return redirect('supplier_list')
    else:
        form = SupplierForm()
    return render(request, 'supplier_form.html', {'form': form, 'action': 'Create'})

@login_required
def supplier_edit(request, pk):
    supplier = get_object_or_404(Supplier, pk=pk)
    if request.method == 'POST':
        form = SupplierForm(request.POST, instance=supplier)
        if form.is_valid():
            supplier = form.save()
            messages.success(request, f'Supplier "{supplier.name}" updated successfully.')
            return redirect('supplier_list')
    else:
        form = SupplierForm(instance=supplier)
    return render(request, 'supplier_form.html', {'form': form, 'action': 'Edit'})

@login_required
def supplier_delete(request, pk):
    supplier = get_object_or_404(Supplier, pk=pk)
    if request.method == 'POST':
        supplier_name = supplier.name
        supplier.delete()
        messages.success(request, f'Supplier "{supplier_name}" deleted successfully.')
        return redirect('supplier_list')
    return render(request, 'supplier_confirm_delete.html', {'supplier': supplier})

# Product Views
# Product Views
@login_required
def product_list(request):
    products = Product.objects.select_related('supplier').all().order_by('name')
    return render(request, 'products.html', {'products': products})

@login_required
def product_create(request):
    if request.method == 'POST':
        form = ProductForm(request.POST)
        if form.is_valid():
            product = form.save()
            # Create inventory record for new product
            Inventory.objects.create(product=product, quantity=0)
            messages.success(request, f'Product "{product.name}" created successfully.')
            return redirect('product_list')
    else:
        form = ProductForm()
    return render(request, 'product_form.html', {'form': form, 'action': 'Create'})

@login_required
def product_edit(request, pk):
    product = get_object_or_404(Product, pk=pk)
    if request.method == 'POST':
        form = ProductForm(request.POST, instance=product)
        if form.is_valid():
            product = form.save()
            messages.success(request, f'Product "{product.name}" updated successfully.')
            return redirect('product_list')
    else:
        form = ProductForm(instance=product)
    return render(request, 'product_form.html', {'form': form, 'action': 'Edit'})

@login_required
def product_delete(request, pk):
    product = get_object_or_404(Product, pk=pk)
    if request.method == 'POST':
        product_name = product.name
        product.delete()
        messages.success(request, f'Product "{product_name}" deleted successfully.')
        return redirect('product_list')
    return render(request, 'product_confirm_delete.html', {'product': product})

# Inventory Views
@login_required
def inventory_list(request):
    inventory = Inventory.objects.select_related('product').all().order_by('product__name')
    return render(request, 'inventory.html', {'inventory': inventory})

@login_required
def inventory_edit(request, pk):
    inventory = get_object_or_404(Inventory, pk=pk)
    if request.method == 'POST':
        form = InventoryForm(request.POST, instance=inventory)
        if form.is_valid():
            form.save()
            messages.success(request, f'Inventory for "{inventory.product.name}" updated successfully.')
            return redirect('inventory_list')
    else:
        form = InventoryForm(instance=inventory)
    return render(request, 'inventory_form.html', {'form': form, 'action': 'Edit'})

# Purchase Order Views
@login_required
def purchase_order_list(request):
    orders = PurchaseOrder.objects.select_related('supplier').all().order_by('-order_date')
    return render(request, 'purchase_orders.html', {'orders': orders})

@login_required
def purchase_order_create(request):
    if request.method == 'POST':
        form = PurchaseOrderForm(request.POST)
        if form.is_valid():
            order = form.save(commit=False)
            order.created_by = request.user
            order.save()
            messages.success(request, f'Purchase order created successfully. Now add items.')
            return redirect('purchase_order_detail', pk=order.pk)
    else:
        form = PurchaseOrderForm()
    return render(request, 'purchase_order_form.html', {'form': form, 'action': 'Create'})

@login_required
def purchase_order_detail(request, pk):
    order = get_object_or_404(PurchaseOrder.objects.prefetch_related('items__product'), pk=pk)
    items = order.items.all()
    
    if request.method == 'POST':
        item_form = PurchaseOrderItemForm(request.POST)
        if item_form.is_valid():
            item = item_form.save(commit=False)
            item.order = order
            item.save()
            messages.success(request, 'Item added to order.')
            return redirect('purchase_order_detail', pk=order.pk)
    else:
        item_form = PurchaseOrderItemForm()
    
    return render(request, 'order_detail.html', {
        'order': order,
        'items': items,
        'item_form': item_form
    })

@login_required
def purchase_order_edit(request, pk):
    order = get_object_or_404(PurchaseOrder, pk=pk)
    if request.method == 'POST':
        form = PurchaseOrderForm(request.POST, instance=order)
        if form.is_valid():
            form.save()
            messages.success(request, 'Purchase order updated successfully.')
            return redirect('purchase_order_detail', pk=order.pk)
    else:
        form = PurchaseOrderForm(instance=order)
    return render(request, 'purchase_order_form.html', {'form': form, 'action': 'Edit'})

@login_required
def purchase_order_delete(request, pk):
    order = get_object_or_404(PurchaseOrder, pk=pk)
    if request.method == 'POST':
        order_number = order.order_number
        order.delete()
        messages.success(request, f'Purchase order {order_number} deleted successfully.')
        return redirect('purchase_order_list')
    return render(request, 'purchase_order_confirm_delete.html', {'order': order})

@login_required
def purchase_order_update_status(request, pk, status):
    order = get_object_or_404(PurchaseOrder, pk=pk)
    valid_statuses = [choice[0] for choice in PurchaseOrder.STATUS_CHOICES]
    
    if status in valid_statuses:
        order.status = status
        order.save()
        
        # If delivered, update inventory
        if status == 'delivered':
            for item in order.items.all():
                inventory, created = Inventory.objects.get_or_create(product=item.product)
                inventory.quantity += item.quantity
                inventory.save()
        
        messages.success(request, f'Order status updated to {status.capitalize()}.')
    else:
        messages.error(request, 'Invalid status provided.')
    
    return redirect('purchase_order_detail', pk=order.pk)

@login_required
def purchase_order_item_delete(request, pk):
    item = get_object_or_404(PurchaseOrderItem, pk=pk)
    order_pk = item.order.pk
    if request.method == 'POST':
        item.delete()
        messages.success(request, 'Item removed from order.')
    return redirect('purchase_order_detail', pk=order_pk)

# 模板渲染函数
def render_template(template_name, context=None, request=None):
    templates = {
        'base.html': BASE_TEMPLATE,
        'login.html': LOGIN_TEMPLATE,
        'dashboard.html': DASHBOARD_TEMPLATE,
        'suppliers.html': SUPPLIERS_TEMPLATE,
        'supplier_form.html': SUPPLIER_FORM_TEMPLATE,
        'supplier_confirm_delete.html': SUPPLIER_DELETE_TEMPLATE,
        'products.html': PRODUCTS_TEMPLATE,
        'product_form.html': PRODUCT_FORM_TEMPLATE,
        'product_confirm_delete.html': PRODUCT_DELETE_TEMPLATE,
        'inventory.html': INVENTORY_TEMPLATE,
        'inventory_form.html': INVENTORY_FORM_TEMPLATE,
        'purchase_orders.html': PURCHASE_ORDERS_TEMPLATE,
        'purchase_order_form.html': PURCHASE_ORDER_FORM_TEMPLATE,
        'order_detail.html': ORDER_DETAIL_TEMPLATE,
        'purchase_order_confirm_delete.html': PURCHASE_ORDER_DELETE_TEMPLATE,
    }
    
    if template_name not in templates:
        return HttpResponse(f"Template {template_name} not found", status=404)
    
    template = Template(templates[template_name])
    context = context or {}
    context['request'] = request
    context['messages'] = messages.get_messages(request) if request else []
    return HttpResponse(template.render(Context(context)))

# URL配置
urlpatterns = [
    # Authentication
    path('login/', login_view, name='login'),
    path('logout/', logout_view, name='logout'),
    
    # Dashboard
    path('dashboard/', dashboard, name='dashboard'),
    
    # Suppliers
    path('suppliers/', supplier_list, name='supplier_list'),
    path('suppliers/create/', supplier_create, name='supplier_create'),
    path('suppliers/edit/<int:pk>/', supplier_edit, name='supplier_edit'),
    path('suppliers/delete/<int:pk>/', supplier_delete, name='supplier_delete'),
    
    # Products
    path('products/', product_list, name='product_list'),
]
  • 写回答

5条回答 默认 最新

  • 檀越@新空间 2025-08-09 20:42
    关注

    晚上好🌙🌙🌙
    本答案参考通义千问

    你的代码看起来是一个 Django 应用程序的脚本,但存在一些问题,导致它无法正常运行。下面我将详细分析原因,并提供解决方案


    ✅ 一、代码无法运行的原因

    1. 代码未完成

    你提供的代码在 Inventory 模型中被截断,没有完整地定义字段:

    class Inventory(models.Model):
        product = models.OneToOneField(Product, on_delete=models.CASCADE, related_name='inventory')
        quantity = models.PositiveI
    

    这里 PositiveI 是不完整的,应该是 PositiveIntegerField。这个错误会导致 Python 报错,因为模型定义不合法。


    2. 未定义视图和 URL 路由

    虽然你导入了 HttpResponse, path, render, redirect 等 Django 功能,但没有定义任何实际的视图函数或 URL 路由。这意味着即使配置正确,也没有可以访问的页面。


    3. 未执行启动命令

    你使用了 execute_from_command_line(),但并没有调用它。也就是说,没有启动 Django 的开发服务器或执行管理命令


    4. 未创建数据库文件

    虽然你设置了 SQLite 数据库为 supply_chain.db,但如果没有运行迁移命令(如 migrate),数据库表不会被创建,可能导致后续操作失败。


    5. 未设置正确的环境变量

    虽然你在 configure_django() 中设置了 DEBUG=True,但在某些环境中(如生产环境)可能需要额外的配置,例如 DJANGO_SETTINGS_MODULE


    ✅ 二、解决方案

    1. 完善模型定义

    Inventory 模型补全:

    class Inventory(models.Model):
        product = models.OneToOneField(Product, on_delete=models.CASCADE, related_name='inventory')
        quantity = models.PositiveIntegerField(default=0)
        created_at = models.DateTimeField(auto_now_add=True)
        updated_at = models.DateTimeField(auto_now=True)
    
        def __str__(self):
            return f"{self.product.name} - {self.quantity}"
    

    2. 添加视图和 URL 路由

    添加一个简单的视图并定义路由:

    def index(request):
        return HttpResponse("Hello, this is the Django app!")
    
    urlpatterns = [
        path('', index, name='index'),
    ]
    

    3. 执行 Django 命令

    在最后添加以下代码来启动 Django 开发服务器:

    if __name__ == "__main__":
        execute_from_command_line(sys.argv)
    

    4. 创建数据库

    确保你运行了 Django 的迁移命令,可以通过以下方式:

    python manage.py migrate
    

    但注意:这通常是在 Django 项目结构中通过 manage.py 运行的。如果你是直接运行该脚本,建议不要直接运行 migrate,而是构建一个完整的 Django 项目结构。


    5. 设置环境变量(可选)

    如果你在某些环境下运行,可以设置:

    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "your_project.settings")
    

    ✅ 三、修改后的完整代码示例

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import os
    import sys
    import django
    from django.conf import settings
    from django.core.management import execute_from_command_line
    from django.http import HttpResponse
    from django.urls import path
    
    # 配置Django环境
    def configure_django():
        if not settings.configured:
            settings.configure(
                DEBUG=True,
                SECRET_KEY='django-insecure-^w5#*+1$s(6k7vx0c4j%!^$q@8u3g&f$1p%j)3l@8!7vx0c4j%',
                ROOT_URLCONF=__name__,
                DATABASES={
                    'default': {
                        'ENGINE': 'django.db.backends.sqlite3',
                        'NAME': 'supply_chain.db',
                    }
                },
                INSTALLED_APPS=[
                    'django.contrib.auth',
                    'django.contrib.contenttypes',
                    'django.contrib.sessions',
                    'django.contrib.messages',
                    'django.contrib.staticfiles',
                ],
                MIDDLEWARE=[
                    'django.middleware.security.SecurityMiddleware',
                    'django.contrib.sessions.middleware.SessionMiddleware',
                    'django.middleware.common.CommonMiddleware',
                    'django.middleware.csrf.CsrfViewMiddleware',
                    'django.contrib.auth.middleware.AuthenticationMiddleware',
                    'django.contrib.messages.middleware.MessageMiddleware',
                    'django.middleware.clickjacking.XFrameOptionsMiddleware',
                ],
                TEMPLATES=[
                    {
                        'BACKEND': 'django.template.backends.django.DjangoTemplates',
                        'DIRS': [],
                        'APP_DIRS': True,
                        'OPTIONS': {
                            'context_processors': [
                                'django.template.context_processors.debug',
                                'django.template.context_processors.request',
                                'django.contrib.auth.context_processors.auth',
                                'django.contrib.messages.context_processors.messages',
                            ],
                        },
                    },
                ],
                STATIC_URL='/static/',
                LOGIN_URL='login',
            )
            django.setup()
    
    # 先执行配置,确保Django初始化完成
    configure_django()
    
    # 定义模型
    from django.db import models
    
    class User(models.Model):
        pass
    
    class Supplier(models.Model):
        name = models.CharField(max_length=100)
        contact_person = models.CharField(max_length=100)
        email = models.EmailField()
        phone = models.CharField(max_length=20)
        address = models.TextField()
        created_at = models.DateTimeField(auto_now_add=True)
        updated_at = models.DateTimeField(auto_now=True)
    
        def __str__(self):
            return self.name
    
    class Product(models.Model):
        CATEGORY_CHOICES = [
            ('raw', 'Raw Material'),
            ('component', 'Component'),
            ('finished', 'Finished Product'),
        ]
        
        name = models.CharField(max_length=100)
        sku = models.CharField(max_length=50, unique=True)
        description = models.TextField(blank=True)
        category = models.CharField(max_length=20, choices=CATEGORY_CHOICES)
        unit_price = models.DecimalField(max_digits=10, decimal_places=2)
        supplier = models.ForeignKey(Supplier, on_delete=models.SET_NULL, null=True, related_name='products')
        created_at = models.DateTimeField(auto_now_add=True)
        updated_at = models.DateTimeField(auto_now=True)
    
        def __str__(self):
            return f"{self.name} ({self.sku})"
    
    class Inventory(models.Model):
        product = models.OneToOneField(Product, on_delete=models.CASCADE, related_name='inventory')
        quantity = models.PositiveIntegerField(default=0)
        created_at = models.DateTimeField(auto_now_add=True)
        updated_at = models.DateTimeField(auto_now=True)
    
        def __str__(self):
            return f"{self.product.name} - {self.quantity}"
    
    # 定义视图
    def index(request):
        return HttpResponse("Hello, this is the Django app!")
    
    # 定义 URL 路由
    urlpatterns = [
        path('', index, name='index'),
    ]
    
    # 启动 Django
    if __name__ == "__main__":
        execute_from_command_line(sys.argv)
    

    ✅ 四、注意事项

    • 此脚本不适合直接用于生产环境,因为它缺少完整的 Django 项目结构。
    • 如果你需要真正运行 Django 应用,请使用标准的 Django 项目结构,包含 settings.py, urls.py, views.pymodels.py
    • 如果你想测试数据库是否创建成功,可以在运行脚本后检查当前目录下是否有 supply_chain.db 文件。

    ✅ 总结

    | 问题 | 解决方案 | |------|----------| | 模型定义不完整 | 补全 Inventory 模型 | | 缺少视图和 URL | 添加 index 视图和 urlpatterns | | 未执行 Django 命令 | 在 if __name__ == "__main__" 中调用 execute_from_command_line | | 未创建数据库 | 使用 python manage.py migrate 或确保配置正确 | | 环境变量缺失 | 设置 DJANGO_SETTINGS_MODULE(可选) |


    如有更多需求(比如添加用户登录、数据操作等),欢迎继续提问!

    评论

报告相同问题?

问题事件

  • 创建了问题 8月9日