首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django Ajax表单提交,如何从表单中获取特定的模型字段

Django Ajax表单提交,如何从表单中获取特定的模型字段
EN

Stack Overflow用户
提问于 2022-08-12 01:00:15
回答 1查看 56关注 0票数 0

对于我的项目,我需要能够通过ajax提交表单,而无需刷新页面。我有一个名为Post的模型,它有三个领域:动物、图像和描述。

这是我的模特的照片

代码语言:javascript
复制
class Post(models.Model):
BISON = 'Bison'
WOLF = 'Wolf'
ELK = 'Elk'
BLACKBEAR = 'Black Bear'
GRIZZLY = 'Grizzly Bear'
MOOSE = 'Moose'
MOUNTAINLION = 'Mountain Lion'
COYOTE = 'Coyote'
PRONGHORN = 'Pronghorn'
BIGHORNSHEEP = 'Bighorn Sheep'
BALDEAGLE = 'Bald Eagle'
BOBCAT = 'Bobcat'
REDFOX = 'Red Fox'
TRUMPETERSWAN = 'Trumpeter Swan'
YELLOWBELLIEDMARMOT = 'Yellow-bellied Marmot'
RIVEROTTER = 'River Otter'
LYNX = 'Lynx'
SHREW = 'Shrew'
PIKA = 'Pika'
SQUIRREL = 'Squirrel'
MULEDEER = 'Mule Deer'
SANDHILLCRANE = 'Sandhill Crane'
FLYINGSQUIRREL = 'Flying Squirrel'
UINTAGROUNDSQUIRREL = 'Uinta Ground Squirrel'
MONTANEVOLE = 'Montane Vole'
EASTERNMEADOWVOLE = 'Eastern Meadow Vole'
BUSHYTAILEDWOODRAT = 'Bushy-tailed Woodrat'
CHIPMUNK = 'Chipmunk'
UINTACHIPMUNK = 'Uinta Chipmunk'
WHITETAILEDJACKRABBIT = 'White-tailed Jackrabbit'
BEAVER = 'Beaver'
AMERICANMARTEN = 'American Marten'
MOUNTAINCHICKADEE = 'Mountain Chickadee'
BOREALCHORUSFROG = 'Boreal Chorus Frog'
CUTTHROATTROUT = 'Cutthroat Trout'
GREATHORNEDOWL = 'Great Horned Owl'
SNOWSHOEHARE = 'Snowshoe Hare'
ROCKYMOUNTAINELK = 'Rocky Mountain Elk'
NORTHWESTERNWOLF = 'Northwestern Wolf'
BLACKFOOTEDFERRET = 'Black-footed Ferret'
WOLVERINE = 'Wolverine'
ANIMALS = [
    (BISON, ('Bison')),
    (WOLF, ('Wolf')),
    (ELK, ('Elk')),
    (BLACKBEAR, ('Black Bear')),
    (GRIZZLY, ('Grizzly Bear')),
    (MOOSE, ('Moose')),
    (MOUNTAINLION, ('Mountain Lion')),
    (COYOTE, ('Coyote')),
    (PRONGHORN, ('Pronghorn')),
    (BIGHORNSHEEP, ('Bighorn Sheep')),
    (BALDEAGLE, ('Bald Eagle')),
    (BOBCAT, ('Bobcat')),
    (REDFOX, ('Red Fox')),
    (TRUMPETERSWAN, ('Trumpeter Swan')),
    (YELLOWBELLIEDMARMOT, ('Yellow-bellied Marmot')),
    (RIVEROTTER, ('River Otter')),
    (LYNX, ('Lynx')),
    (SHREW, ('Shrew')),
    (PIKA, ('Pika')),
    (SQUIRREL, ('Squirrel')),
    (MULEDEER, ('Mule Deer')),
    (SANDHILLCRANE, ('Sandhill Crane')),
    (FLYINGSQUIRREL, ('Flying Squirrel')),
    (UINTAGROUNDSQUIRREL, ('Uinta Ground Squirrel')),
    (MONTANEVOLE, ('Montane Vole')),
    (EASTERNMEADOWVOLE, ('Eastern Meadow Vole')),
    (BUSHYTAILEDWOODRAT, ('Bushy-tailed Woodrat')),
    (CHIPMUNK, ('Chipmunk')),
    (UINTACHIPMUNK, ('Uinta Chipmunk')),
    (WHITETAILEDJACKRABBIT, ('White-tailed Jackrabbit')),
    (BEAVER, ('Beaver')),
    (AMERICANMARTEN, ('American Marten')),
    (MOUNTAINCHICKADEE, ('Mountain Chickadee')),
    (BOREALCHORUSFROG, ('Boreal Chorus Frog')),
    (CUTTHROATTROUT, ('Cutthroat Trout')),
    (GREATHORNEDOWL, ('Great Horned Owl')),
    (SNOWSHOEHARE, ('Snowshoe Hare')),
    (ROCKYMOUNTAINELK, ('Rocky Mountain Elk')),
    (NORTHWESTERNWOLF, ('Northwestern Wolf')),
    (BLACKFOOTEDFERRET, ('Black-footed Ferret')),
    (WOLVERINE, ('Wolverine'))
]

animal = models.CharField(max_length=32, choices=ANIMALS, default=BISON)
image = models.ImageField(upload_to='images', default='static/images/yellowstonelake.jpg')
description = models.TextField(null=True, blank=True)

def __str__(self):
    return self.animal

这是我的form.py的照片

代码语言:javascript
复制
class PostForm(ModelForm):
class Meta:
    model = Post
    fields = '__all__'

这是我的视图页面的图片

代码语言:javascript
复制
def homePage(request):
form = PostForm()
if request.method == 'POST':
    animalType=request.POST['animal']
    new_post = Post(animal=animalType)
    new_post.save()

context = {'form': form}
return render(request, 'home.html', context)

我相信问题就在我用来提交表单的javascript中,而不是刷新页面。我能够成功地通过表单提交,但是我的.部分中的数据:{.}部分一定是不正确的?我指的是下面图像中的第651行。</div><div><a href="https://i.stack.imgur.com/O3kGD.jpg">ajax javascript img</a></div><pre><code> &lt;script type=&quot;text/javascript&quot;&gt; $(document).on('submit','#post-form',function(e){ e.preventDefault(); $.ajax({ type:'POST', url:'', data: { animal:$(&quot;form&quot;).val(), csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val(), }, success:function(data){ alert(&quot;success!&quot;) } }) }); &lt;/script&gt;</code></pre><div>我需要这个价值不仅仅是:</div><div>动物:$(“form).val()</div><div>因为每当我提交这个并进入我的项目的后端管理站点,我无法编辑我的文章,他们只是我的数据库中的空对象。理想情况下,我希望这个值是用户选择的动物的名称。我尝试过使用诸如$(“form.model.animal”)、.val()或$(“form”).val(动物)之类的值,但是我没有运气。</div><div>这是我的后端管理网站的样子,与一些“成功”的提交。请让我知道我,你可以看到我在哪里的错误和如何解决这个恼人的问题!谢谢!</div><div><a href="https://i.stack.imgur.com/VfkLb.png">行政职位网页</a></div><div>表单字段模板:</div><pre><code>const postpopup = new mapboxgl.Popup({ offset: [0, -15] }) .setLngLat([lt, lg]) .setHTML( `&lt;h1&gt;Yellowmap :) Post Forum&lt;/h1&gt; &lt;div style=&quot;margin-left: 40px;&quot;&gt; &lt;form id=&quot;post-form&quot;&gt; {% csrf_token %} {{form}} &lt;input type=&quot;submit&quot;/&gt; &lt;/form&gt; &lt;p&gt;&lt;/p&gt; &lt;/div&gt;` )</code></pre><div></div>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-12 05:26:11

代码中的一切都很好,您只需稍微修改一下AJAX代码即可。还有你的views.py文件。

阿贾克斯

代码语言:javascript
复制
    $(document).on('submit', '#post-form', function (e) {
        e.preventDefault();
        $.ajax({
            type: 'POST',
            url: "{% url 'insert_form' %}",
            data:
                {
                    animal: $("#id_animal").val(),
                    image: $("#id_image").val(),
                    description: $("#id_description").val(),
                    csrfmiddlewaretoken: '{{ csrf_token }}',
                },
            success: function () {
                alert("success!")
            }
        })
    });

views.py

代码语言:javascript
复制
def homePage(request):
    form = PostForm()
    if request.method == 'POST':
        form = PostForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return HttpResponse('')

    context = {'form': form}
    return render(request, '.html', context)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73328273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档