做自己的第一个网站(Bootscrapt、odoo14作、JQuery)
今天发布自己的第一个网站,网站内容是关于自己家乡的美景,效果图如下:网站地址是:http://hxmelon.com/



二、技术篇
1、在这里网站用的是Bootscrapt框架作为网站开发模板、前端语言用了JQuery、 axios;
2、部署用到了nginx;
3、后端存储留言公告信息,用到了odoo14社区版;
三、重要技术点的实现
1、在网站里面插入百度地图,提供拖拽,效果图如下:

具体代码实现:
html里面添加一块区域用来展示地图代码如下:
<div id="dituContent" style="height: 600px;width: 920px;margin-left: 60px;margin-right: 10px;"> </div>
<script type="text/javascript">
//方法用于向指定元素添加事件句柄
window.addEventListener("load", () => {
//创建和初始化地图函数:
function initMap() {
createMap();//创建地图
setMapEvent();//设置地图事件
addMapControl();//向地图添加控件
} //创建地图函数:
function createMap() {
var map = new BMap.Map("dituContent");//在百度地图容器中创建一个地图
var point = new BMap.Point(116.621623, 30.262393);//定义一个中心点坐标
map.centerAndZoom(point, 12);//设定地图的中心点和坐标并将地图显示在地图容器中
window.map = map;//将map变量存储在全局
} //地图事件设置函数:
function setMapEvent() {
map.enableDragging();//启用地图拖拽事件,默认启用(可不写)
map.enableScrollWheelZoom();//启用地图滚轮放大缩小
map.enableDoubleClickZoom();//启用鼠标双击放大,默认启用(可不写)
map.enableKeyboard();//启用键盘上下左右键移动地图
} //地图控件添加函数:
function addMapControl() {
//向地图中添加缩放控件
var ctrl_nav = new BMap.NavigationControl({ anchor: BMAP_ANCHOR_TOP_LEFT, type: BMAP_NAVIGATION_CONTROL_LARGE });
map.addControl(ctrl_nav);
//向地图中添加缩略图控件
var ctrl_ove = new BMap.OverviewMapControl({ anchor: BMAP_ANCHOR_BOTTOM_RIGHT, isOpen: 1 });
map.addControl(ctrl_ove);
//向地图中添加比例尺控件
var ctrl_sca = new BMap.ScaleControl({ anchor: BMAP_ANCHOR_BOTTOM_LEFT });
map.addControl(ctrl_sca);
}
initMap();//创建和初始化地图
}) </script>
2、网站前端数据通过接口传到后端odoo里面实现
1、后端接口接收数据,http格式
# -*- coding: utf-8 -*-
from odoo import http
import os
from jinja2 import Environment, FileSystemLoader
import json
from odoo import api, fields, models, _
from odoo import SUPERUSER_ID, tools
from odoo.http import request, route import logging _logger = logging.getLogger(__name__) class HxVisitorOrder(http.Controller): @http.route('/hx/visitor/order/api', type="http", auth="public", csrf=False, cors='*')
def hx_visitor_order_api(self, **kw):
"""该api用来 执行化验结果 同步"""
# data = json.loads(request.httprequest.data)
print ('-----------------kw--------------',kw)
obj = request.env['hx.melon.order']
res = obj.sudo().create({
'name': kw.get('name') or '',
'email': kw.get('email') or '',
'subject': kw.get('subject') or '',
'notes': kw.get('messages') or ''
})
a = {"result": "success"}
return json.dumps(a)
2.前端发送数据格式
<div class="section-content">
<form id="contact">
<div class="row">
<div class="col-md-4">
<fieldset>
<input name="name" type="text" class="form-control" id="name" placeholder="名字..."
required="">
</fieldset>
</div>
<div class="col-md-4">
<fieldset>
<input name="email" type="email" class="form-control" id="email" placeholder="邮箱..."
required="">
</fieldset>
</div>
<div class="col-md-4">
<fieldset>
<input name="subject" type="text" class="form-control" id="subject" placeholder="主题"
..." required="">
</fieldset>
</div>
<div class="col-md-12">
<fieldset>
<textarea name="message" rows="6" class="form-control" id="message"
placeholder="内容..." required></textarea>
</fieldset>
</div>
<div class="col-md-12">
<fieldset>
<button type="button" id="form-submit" class="hx-btn-submit">发送</button>
</fieldset>
</div>
</div>
</form>
</div>
具体逻辑实现
<script>
$(function () {
$(".hx-btn-submit").click(function () {
//
let name = $("#name").val();
let email = $("#email").val();
let subject = $("#subject").val();
let message = $("#message").val();
var submit_btn = $("#form-submit"); var str_value = {
name: name,
email: email,
subject: subject,
messages: message
};
var url = window.server_url+'/hx/visitor/order/api'
// axios({
// url: url,
// headers:{
// 'Content-Type':'text/plain'
// },
// method: 'post',
// data:JSON.stringify(str_value),
// }).then( (response)=> {
// submit_btn.text("发送成功");
// submit_btn.css("background","green");
// console.log(response);
// })
// .catch(function (error) {
// console.log(error);
// }); axios({
url: url,
method: 'post',
params:{
name:name,
email:email,
subject:subject,
message:message
}
}).then( (response)=> {
submit_btn.text("发送成功");
submit_btn.css("background","green");
setTimeout(()=>{
console.log("------------------");
submit_btn.text("发送");
submit_btn.css("background","#45489a");
// $("#name").val(" ");
// $("#email").val(" ");
// $("#subject").val(" ");
// $("#message").val(" ");
// $("#name").attr("placeholder","名字.."); },2000);
})
.catch(function (error) {
//按钮的文字存下
var btnTextData = submit_btn.innerText;
submit_btn.text("发送失败");
submit_btn.css("background","#f00");
setTimeout(()=>{
console.log("------------------");
submit_btn.text("发送");
submit_btn.css("background","#45489a");
name=''
},2000);
});
}) })
</script>
这么做的的话会遇到跨域问题,怎么解决跨域问题:通过nginx来解决跨域问题
具体解决办法如下:然后用nginx启动服务,在调用时用:

最后后端
做自己的第一个网站(Bootscrapt、odoo14作、JQuery)的更多相关文章
- 我人生做过的第一个信息化项目--TIPTOP 5.0 ERP项目
我人生做过的第一个信息化项目--TIPTOP 5.0 ERP项目 2008年8月毕业不久,我参与了我人生的第一个信息化项目:TIPTOP 5.0 ERP项目.
- Android:刚6瓶啤酒4两56度白酒下肚,居然20分钟做了一手机版网站 !
刚6瓶啤酒4两56度白酒下肚,居然20分钟不到时间做了一手机版网站 !人有多大潜力你知道吗? 大家有兴趣的可以用手机或微信打开 http://xh.yunxunmi.com/ 看看俺这酒后之做! 更 ...
- SharePoint 第一个网站
第一个网站 1.建立一个社区门户网站首先要建一个IIS网站,并且把匿名访问勾选上,这样才能真正的访问网站. 创建网站的时候更改自己想要的端口,以便操作 这里更改网站是否启用匿名访问权限.点击是 然后保 ...
- 第一百九十一节,jQuery EasyUI 入门
jQuery EasyUI 入门 学习要点: 1.什么是 jQuery EasyUI 2.学习 jQuery EasyUI 的条件 3.jQuery EasyUI 的功能和优势 4.其他的 UI 插件 ...
- 第一百八十八节,jQuery,选项卡 UI
jQueryUI,选项卡 UI 学习要点: 1.使用 tabs 2.修改 tabs 样式 3.tabs()方法的属性 4.tabs()方法的事件 5.tabs 中使用 on 选项卡(tab),是一种能 ...
- 第一百八十七节,jQuery,知问前端--cookie 插件,注册成功后生成cookie,显示登录状态
jQuery,知问前端--cookie 插件 学习要点: 1.使用 cookie 插件 2.注册直接登录 Cookie 是网站用来在客户端保存识别用户的一种小文件.一般来用库可以保存用户登 录信息.购 ...
- HubSpot – 网站开发必备的 jQuery 信息提示库
HubSpot 一款功能丰富的 jQuery 消息提示插件.它可以帮助你个性化显示您的应用程序的事务性消息.您可以轻松地包裹 Ajax 请求进度,成功和错误消息,还可以添加操作链接到您的消息中. Hu ...
- 做bad apple第一步:超级好用的you-get下载各大网站音频!!!!
1 安装在cmd中输入pip3 install you-get 就行了 2 简单用法下载视频: 超级暴力,直接 you-get + "网站" 就没了,会下载到当前路径.我想下载到哪 ...
- Nutch2.x 演示抓取第一个网站
http://www.micmiu.com/opensource/nutch/nutch2x-crawl-first-website/?utm_source=tuicool&utm_mediu ...
- uwsgi基本介绍安装和测试--使用Django建立你的第一个网站
一 基本介绍 对像我这样不是专业做网络的人来说,uuwsgi是一个陌生的东西.它是谁?它可以做什么?谁会用到它?其实,在不知道一个东西是什么的情况下,能够快速的了解并使用它,是一门很有艺术性的事情.最 ...
随机推荐
- python面向对象-我敢站在世界巅峰保证:这里可以找到几乎百分之九十python面向对象的内容(面向对象三大特性、成员、组合、特殊成员、反射、类的约束、自定义异常、多继承之C3算法)
概要: 面向对象 2 面向对象 Java语言:只支持面向对象方式 python语言: 面向过程[不推荐] 函数式[推荐] 面向对象[比较推荐]了解.能看懂.看源码 函数式编程:代码重用性.可读性较好 ...
- Java中的JDK、JRE及JVM的简介及功能
JDK: JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK).没有JDK的话,无法编译Java程序(指java源码.java文件),如果想只运行Java程 ...
- MySQL查询建表规范
因为之前一直再查找一些比较好的数据库规范,以方便在开发时连接 MySQL 进行查询/建表的时候,能根据规范来执行,达到提高 查询速度 / 执行 SQL 的性能 和提升 MySQL 的整体性能, 这里主 ...
- Windows核心编程 进程与线程
进程 Windows作为多任务操作系统,允许多个程序同时在系统中运行.这些程序被称为进程,进程运行在一片独立的空间中,受到操作系统保护,操作系统的很多资源都是围绕着进程来进行分配,可以理解为操作系统维 ...
- MySQL-删除数据和count(*)原理
delete删除数据原理 在InndoDB存储引擎中,delete删除操作是把需要删除的数据或者页标记为已删除,后面如果有需要,直接复用即可.这些被标记为已经删除的数据,看起来就像空洞一样.所以看起来 ...
- 【Git】在 Eclipse 中使用 Git
在 Eclipse 中使用 Git Eclipse 中默认自带了 Git 插件,通过点击 Help→About Eclipse IDE 可以查看 1 全局配置 1.1 配置用户名和邮箱 点击 Wind ...
- 独家推荐!这款端到端AI测试工具 Testim,让效率飙升!(支持移动端、Web端)
在当今快速发展的软件开发时代,确保软件质量成为每个开发团队的首要任务. 随着人工智能(AI)和机器学习(ML)技术的飞速发展,AI测试工具应运而生,为软件测试领域带来了革命性的变化.今天,我要向大家强 ...
- Jenkins pipeline之声明式的jenkinsfile
Jenkins pipeline之声明式的jenkinsfile 内置的关键字 pipeline : 是pipeline的跟节点 agent: 定义piple使用哪个账号在哪个机器上执行 post: ...
- cesium czml更新dataSource
cesium czml更新dataSource:沙盒
- cesium裁切面实践
cesium裁切面实践:沙盒地址 (打不开的自行科学访问) 裁切面法线方向指向保留的部分,本案例通过法线配合unionClippingRegions参数实现相比官方案例没有的:多裁切面互裁,裁两边留中 ...