django form代码实例

创建一个表单来分享帖子。

Django有一个内置的表单框架允许你通过简单的方式来创建表单。这个表单框架允许你定义你的表单字段,指定这些字段必须展示的方式,以及指定这些字段如何验证输入的数据。Django表单框架还提供了一种灵活的方式来渲染表单以及操作数据。

Django提供了两个可以创建表单的基本类:
• Form: 允许你创建一个标准表单
• ModelForm: 允许你创建一个可用于创建或者更新model实例的表单

首先,在你blog应用的目录下创建一个forms.py文件,输入以下代码:

from django import forms
class EmailPostForm(forms.Form):
    name = forms.CharField(max_length=25)
    email = forms.EmailField()
    to = forms.EmailField()

    comments = forms.CharField(required=False,widget=forms.Textarea)

表单可以存在你的Django项目的任何地方,但按照惯例将它们放在每一个应用下面的forms.py文件中。

name字段是一个CharField。这种类型的字段被渲染成<input type=“text”>HTML元素。每种字段类型都有默认的控件来确定它在HTML中的展示形式。通过改变控件的属性可以重写默认的控件。在comment字段中,我们使用<textarea></textarea>HTML元素而不是使用默认的<input>元素来显示它。

字段验证取决于字段类型。例如,email和to字段是EmailField,这两个字段都需要一个有效的email地址,否则字段验证将会抛出一个forms.ValidationError异常导致表单验证不通过。在表单验证的时候其他的参数也会被考虑进来:我们将name字段定义为一个最大长度为25的字符串;通过设置required=False让comments的字段可选。所有这些也会被考虑到字段验证中去。目前我们在表单中使用的这些字段类型只是Django支持的表单字段的一部分。要查看更多可利用的表单字段,你可以访问:https://docs.djangoproject.com/en/1.8/ref/forms/fields/

在视图(views)中操作表单

当表单成功提交后你必须创建一个新的视图(views)来操作表单和发送email。编辑blog应用下的views.py文件,添加以下代码:

from django.shortcuts import render, get_object_or_404

from .models import Post

from .forms import EmailPostForm

from django.core.email import send_mail

def post_share(request, post_id):

    # retrieve post by id
    post = get_object_or_404(Post, id=post_id, status='published')
    if request.method == 'POST':
        # Form was submitted
        form = EmailPostForm(request.POST)
        if form.is_valid():
            # Form fields passed validation
            cd = form.cleaned_data

            # ... send email 这里就可以做很多事情了

            #post_url = request.build_absolute_url(post.get_absolute_url())
            subject = '{} ({}) recommends you reading "{}"'.format(cd['name'], cd['email'], post.title)
            message = 'Read "{}" at\n{}\'s comments: {}'.format(post.title,  cd['name'], cd['comments'])
            send_mail(subject, message, 'admin@myblog.com',[cd['to']])

        else:
        form = EmailPostform()

    return render(request, 'blog/post/share.html', {'post': post,'form: form})

可能有点不完整,但作为表单的参考代码在忘记的时候可以快速回忆。

以下是一个使用Django实现弹窗功能的代码示例: 首先,需要在Django的views.py文件中定义一个处理弹窗的视图函数。这个视图函数负责接收前端页面传递的弹窗数据,进行处理并返回给前端页面。 ```python # views.py from django.shortcuts import render def popup_view(request): if request.method == "POST": popup_value = request.POST.get("popup_value") # 进行弹窗数据的处理逻辑 # ... return render(request, "popup_template.html", {"popup_value": popup_value}) else: return render(request, "popup_template.html") ``` 在上述代码中,我们定义了一个名为popup_view的视图函数。如果请求方法为POST,即接收到了弹窗数据,我们将从POST请求中获取弹窗值,并进行相应的处理逻辑。然后,将处理结果传递给名为popup_template.html的模板文件。 接下来,需要在Django的urls.py文件中定义一个用于处理弹窗的URL。 ```python # urls.py from django.urls import path from .views import popup_view urlpatterns = [ path('popup/', popup_view, name='popup'), ] ``` 在上述代码中,我们将弹窗的URL设置为"/popup/",并将其对应到popup_view视图函数。 最后,需要在Django的模板文件中添加与弹窗相关的HTML代码。 ```html <!-- popup_template.html --> <form method="POST" action="{% url 'popup' %}"> {% csrf_token %} <input type="text" name="popup_value" placeholder="请输入弹窗值"> <input type="submit" value="提交"> </form> {% if popup_value %} <script> alert("弹窗值为:{{ popup_value }}"); </script> {% endif %} ``` 在上述代码中,我们创建了一个表单,其中包含一个文本输入框和一个提交按钮。表单的提交地址是我们在urls.py中定义的popup视图函数的URL。在文本框中输入完弹窗值后,点击提交按钮将数据发送给服务器。 最后一个{% if popup_value %}的条件语句用于判断是否接收到了弹窗值。如果有,则通过JavaScript弹出一个弹窗框,显示接收到的弹窗值。 通过以上代码实现,当用户在浏览器中访问"/popup/"时,会展示一个带有弹窗输入框和提交按钮的页面。在用户输入弹窗值并提交后,会弹出一个弹窗框显示输入的弹窗值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值