首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Django网站中添加订阅选项

如何在Django网站中添加订阅选项
EN

Stack Overflow用户
提问于 2022-03-04 14:36:02
回答 1查看 125关注 0票数 0

我正试图在django网站上添加订阅时事通讯选项。当访问者输入有效的电子邮件地址时,它将被存储在数据库中。订阅表单是base.html模板的一部分。网站的所有其他模板都扩展了此模板。我希望以一种干巴巴的方式来实现这一点。我就是这么做的:

forms.py:

代码语言:javascript
复制
from dataclasses import fields
from django import forms
from . models import Subscribers, MailMessage

class SubcribersForm(forms.ModelForm):
    class Meta: 
        model = Subscribers
        fields = ['email', ]

views.py:

代码语言:javascript
复制
def base(request):
    if request.method == 'POST':
        form = SubcribersForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('/')
    else:
        form = SubcribersForm()

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

模板: base.html

代码语言:javascript
复制
        <form method = "POST" class="signup-form form-inline justify-content-center pt-3">
            {% csrf_token %}
            <div class="form-group">
                <label class="sr-only" for="semail">{{context}}</label>
                <input type="email" id="semail" name="semail1"  class="form-control mr-md-1 semail" placeholder="Enter email">
            </div>
            <button type="submit" class="btn btn-primary">Subscribe</button>
        </form>

models.py:

代码语言:javascript
复制
class Subscribers(models.Model):
    email = models.EmailField(null=True)
    date = models.DateTimeField(auto_now_add=True)

    def __str__self(self):
        return self.email

在后端,我可以看到已经创建了订户表。但是,当我从主页输入任何电子邮件地址并单击“订阅”按钮时,它不会将其存储在数据库中。这里有什么问题?

EN

回答 1

Stack Overflow用户

发布于 2022-03-04 15:21:45

这可能是因为您没有以您的形式声明任何操作。假设你有这样的网址:

代码语言:javascript
复制
path('add-subscriber/', base, name='base'),

...your表单需要一种在提交时调用它的方法,如下所示:

代码语言:javascript
复制
        <form method = "POST" action="{% url 'base' %}" class="signup-form form-inline justify-content-center pt-3">
            {% csrf_token %}
            <div class="form-group">
                <label class="sr-only" for="semail">{{context}}</label>
                <input type="email" id="semail" name="semail1"  class="form-control mr-md-1 semail" placeholder="Enter email">
            </div>
            <button type="submit" class="btn btn-primary">Subscribe</button>
        </form>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71352960

复制
相关文章

相似问题

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