Xodoo第十八节

网站Form表单提交

class Main(http.Controller):

@http.route('/inquiry/form', type='http', auth="public", website=True)
    def inquiry_form_template(self, **kw):
        return request.render("my_hostel.hostel_inquiry_form")

render 

def render(self, template, qcontext=None, lazy=True, **kw):

QWeb 模板的延迟渲染,给定模板的实际呈现将在调度结束时进行。同时,模板和qcontext可以被更改,甚至被静态响应所取代。

template:要使用的模板

gcontext:要使用的渲染上下文

lazy:是否应将模板渲染推迟到最后一刻

kw:转发到 werkzeug 的 Response 对象

website=Ture表示使用官方模板 需要下载website模块 并且在manifest文件depends中引用

把我们写好的XML文件也加入到manifest文件data中

# -*- coding: utf-8 -*-
{
    ......
    "depends": ['mail','base','website'],
    "license": "AGPL-3",
    'data': [
        ......
        "views/form_template.xml",
    ],
    ......
}

form_template.xml 

<odoo>
    <template id="hostel_inquiry_form"
        name="Hostel Inquiry Form">
        <t t-call="website.layout">
            <section class="s_website_form" data-snippet="s_website_form">
                <div class="container">
                    <div class="row">
                        <div class="col-md-12 mb64">
                            <div class="aboutus-section pl-5 pr-5 p-t-100 p-b-50">
                                <div class="wrapper wrapper--w900">
                                    <div class="card">
                                        <div class="card-body mt8">
                                            <form action="/inquiry/submit" method="POST" class="o_mark_required" id="inquiry_form" enctype="multipart/form-data">
                                                <input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/>
                                                <div class="row">
                                                    <div class="form-group col-md-12">
                                                        <label for="name"> Your Name </label>
                                                        <input type="text" class="form-control" name="name"
                                                                id="name" required="True" />
                                                    </div>
                                                </div>
                                                <div class="row">
                                                    <div class="form-group col-md-12">
                                                        <label for="phone"> Phone </label>
                                                        <input type="text" class="form-control" name="phone"
                                                                id="phone" required="True" />
                                                    </div>
                                                </div>
                                                <div class="row">
                                                    <div class="form-group col-md-12">
                                                        <label for="email"> Email ID </label>
                                                        <input type="text" class="form-control" name="email"
                                                                id="email"/>
                                                    </div>
                                                </div>
                                                <div class="row">
                                                    <div class="form-group col-md-12">
                                                        <label for="book_fy"> Booking for the Year </label>
                                                        <input type="text" class="form-control" name="book_fy"
                                                                id="book_fy"/>
                                                    </div>
                                                </div>
                                                <div class="row">
                                                    <div class="form-group col-md-12">
                                                        <label for="queries"> Your Question </label>
                                                        <input type="text" class="form-control" name="queries"
                                                                id="queries"/>
                                                    </div>
                                                </div>
                                                <div class="form-group row">
                                                    <div class="col-sm-12">
                                                        <button type="submit" 
                                                            class="btn btn-primary btn-lg a-submit">
                                                            <span>Submit</span>
                                                        </button>
                                                    </div>
                                                </div>
                                            </form>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </section>
        </t>
    </template>
</odoo>

访问网站就能看见我们写的模板了  输入数据点击submit 提交数据

 根据XML中action="/inquiry/submit" 我们定义路由 把刚才输入的值作为参数传入进来

@http.route('/inquiry/submit', type='http', auth="public", website=True)
    def inquiry_form(self, **kwargs):
        inquiry_obj = request.env['hostel.inquiries']
        form_vals = {
            'name': kwargs.get('name') or '',
            'email': kwargs.get('email') or '',
            'phone': kwargs.get('phone') or '',
            'book_fy': kwargs.get('book_fy') or '',
            'queries': kwargs.get('queries') or '',
        }
        submit_success = inquiry_obj.sudo().create(form_vals)
        return request.redirect('/contactus-thank-you')

使用“ submit_success = inquiry_obj.sudo().create(form_vals) ” 创建记录

 最后重定向到页面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DTCloud4

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值