模型
from .BaseModel import BaseModel
from django.db import models
from django.urls import reverse
class AdvPosition(BaseModel):
    name = models.CharField(max_length=255, help_text = "广告位名称")
    def get_absolute_url(self):
        return reverse('backend:adv-position-index')
    class Meta(BaseModel.Meta):
        db_table =  'adv_position'
模型中需要设定跳转地址,在保存成功后会根据这个地址跳转。
url
path('adv-position/create', AdvPositionCreateView.as_view(), name = 'adv-position-create'),
由于model使用了app_name
所以需要再urls.py中添加
app_name = 'backend'
create.html
<form class="form-horizontal" action="{{ request.get_full_path }}" method="post">
    {% csrf_token %}
   
  <div class="card-body">
    {{ form.as_ul }}
  </div>
  <div class="card-footer">
    <input type="submit" class="btn btn-info" value="submit" />
  </div>
</form>
view
为什么把view放最后呢,因为view有很多中方式
可以用面向过程的方式,在view.py中直接写,主要说下面向对象方式
diango提供了一个CreateView,使用这个可以很方便的做form的添加
方式1:
class AdvPositionCreateView(CreateView):
    model = AdvPosition # 指定模型
    template_name = 'adv-position/create.html'
    fields = ['name']
fields指定表单字段。
方式2:
需要ModelForm,
from django import forms 
from common.models import AdvPosition
class AdvPositionForm(forms.ModelForm):
    class Meta:
        model = AdvPosition
        fields = ['name']
ModelForm需要指定fields,用于指定表单字段。
class AdvPositionCreateView(CreateView):
    model = AdvPosition # 指定模型
    template_name = 'adv-position/create.html'
    form_class = AdvPositionForm
方式3:
使用get,post
class AdvPositionCreateView(CreateView):
    model = AdvPosition # 指定模型
    template_name = 'adv-position/create.html'
    form_class = AdvPositionForm
    def get(self, request, *args, **kwargs):
        form = self.form_class()
        return render(request, 'adv-position/create.html', {'form': form})
    def post(self, request, *args, **kwargs):
        form = self.form_class(request.POST)
        if form.is_valid():
            form.save()
            return redirect('/backend/adv-position/index')
        return render(request, 'adv-position/create.html', {'form': form})
方式4:
使用get,post
class AdvPositionCreateView(CreateView):
    model = AdvPosition # 指定模型
    template_name = 'adv-position/create.html'
    def get(self, request, *args, **kwargs):
        form = AdvPositionForm()
        return render(request, 'adv-position/create.html', {'form': form})
    def post(self, request, *args, **kwargs):
        form = AdvPositionForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('/backend/adv-position/index')
        return render(request, 'adv-position/create.html', {'form': form})
Django广告位模型创建
        
                  
                  
                  
                  
                            
本文详细介绍如何在Django框架中创建广告位模型,并通过多种视图方式实现表单的添加,包括使用CreateView简化form操作,以及通过get和post方法自定义处理流程。
          
      
          
                
                
                
                
              
                
                
                
                
                
              
                
                
              
            
                  
					2056
					
被折叠的  条评论
		 为什么被折叠?
		 
		 
		
    
  
    
  
            


            