今天发布自己的第一个网站,网站内容是关于自己家乡的美景,效果图如下:网站地址是: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>
    //配置文件
    window.server_url = "/odoo14";
 </script>

<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启动服务,在调用时用:

 <script>
    //配置文件
    window.server_url = "/odoo14";
 </script>

最后后端

做自己的第一个网站(Bootscrapt、odoo14作、JQuery)的更多相关文章

  1. 我人生做过的第一个信息化项目--TIPTOP 5.0 ERP项目

    我人生做过的第一个信息化项目--TIPTOP 5.0 ERP项目 2008年8月毕业不久,我参与了我人生的第一个信息化项目:TIPTOP 5.0 ERP项目.

  2. Android:刚6瓶啤酒4两56度白酒下肚,居然20分钟做了一手机版网站 !

    刚6瓶啤酒4两56度白酒下肚,居然20分钟不到时间做了一手机版网站 !人有多大潜力你知道吗? 大家有兴趣的可以用手机或微信打开 http://xh.yunxunmi.com/  看看俺这酒后之做! 更 ...

  3. SharePoint 第一个网站

    第一个网站 1.建立一个社区门户网站首先要建一个IIS网站,并且把匿名访问勾选上,这样才能真正的访问网站. 创建网站的时候更改自己想要的端口,以便操作 这里更改网站是否启用匿名访问权限.点击是 然后保 ...

  4. 第一百九十一节,jQuery EasyUI 入门

    jQuery EasyUI 入门 学习要点: 1.什么是 jQuery EasyUI 2.学习 jQuery EasyUI 的条件 3.jQuery EasyUI 的功能和优势 4.其他的 UI 插件 ...

  5. 第一百八十八节,jQuery,选项卡 UI

    jQueryUI,选项卡 UI 学习要点: 1.使用 tabs 2.修改 tabs 样式 3.tabs()方法的属性 4.tabs()方法的事件 5.tabs 中使用 on 选项卡(tab),是一种能 ...

  6. 第一百八十七节,jQuery,知问前端--cookie 插件,注册成功后生成cookie,显示登录状态

    jQuery,知问前端--cookie 插件 学习要点: 1.使用 cookie 插件 2.注册直接登录 Cookie 是网站用来在客户端保存识别用户的一种小文件.一般来用库可以保存用户登 录信息.购 ...

  7. HubSpot – 网站开发必备的 jQuery 信息提示库

    HubSpot 一款功能丰富的 jQuery 消息提示插件.它可以帮助你个性化显示您的应用程序的事务性消息.您可以轻松地包裹 Ajax 请求进度,成功和错误消息,还可以添加操作链接到您的消息中. Hu ...

  8. 做bad apple第一步:超级好用的you-get下载各大网站音频!!!!

    1 安装在cmd中输入pip3 install you-get 就行了 2 简单用法下载视频: 超级暴力,直接 you-get + "网站" 就没了,会下载到当前路径.我想下载到哪 ...

  9. Nutch2.x 演示抓取第一个网站

    http://www.micmiu.com/opensource/nutch/nutch2x-crawl-first-website/?utm_source=tuicool&utm_mediu ...

  10. uwsgi基本介绍安装和测试--使用Django建立你的第一个网站

    一 基本介绍 对像我这样不是专业做网络的人来说,uuwsgi是一个陌生的东西.它是谁?它可以做什么?谁会用到它?其实,在不知道一个东西是什么的情况下,能够快速的了解并使用它,是一门很有艺术性的事情.最 ...

随机推荐

  1. try except 案例

    def to_split(df): # 删除不符合加班统计的记录 try: df.dropna(subset=['姓名'], inplace=True) hang_index = df[df['加班信 ...

  2. 玩three.js的一点心得

    契机: 3-4月份,有机会再次学了一遍高数,然后再一次从二,三重积分的坑里爬来爬去,其中有个直观的问题一直困扰着我就是一个函数在空间坐标系上的图像,所以当时就打算学完这些之后,自己在5月份的时候用th ...

  3. 搭建自己的OCR服务,第二步:PaddleOCR环境安装

    PaddleOCR环境安装,遇到了很多问题,根据系统不同问题也不同,不要盲目看别人的教程,有的教程也过时了,根据实际情况自己调整. 我这边目前是使用windows 10系统+CPU + python ...

  4. Tiki靶机练习

    Scan 先arp-scan -l扫描附件主机ip nmap -sS -sV -n -T4 -p- 192.168.93.132 Starting Nmap 7.94SVN ( https://nma ...

  5. Ai满嘴顺口溜,想考研?浪费我几个小时

    Trae + claude3.7 事情的经过是这样的: 我有个方法代码如下: /// <summary> /// 获取客户端列表 /// </summary> /// < ...

  6. 基于RK3568 + FPGA国产平台的多通道AD实时采集显示方案分享

    在工业控制与数据采集领域,高精度的AD采集和实时显示至关重要.今天,我们就来基于瑞芯微RK3568J + FPGA国产平台深入探讨以下,它是如何实现该功能的.适用开发环境如下: Windows开发环境 ...

  7. Object类--equals方法--java进阶day05

    1.equals方法 2.equals方法的逻辑 如图,我们发现调用equals方法将两个属性一样的变量进行比较时,返回的还是false 为了了解清楚equals方法的逻辑,我们ctrl 鼠标右键点击 ...

  8. 爆肝 1 周,为我的白板工具支持了 mermaid 流程图,为 ai 生成流程图铺平道路

    朋友们好,前一段时间在博客园推荐了我的白板工具 Drawnix,得到了很多朋友的支持,非常感谢,最近 Drawnix 又有了一些重要更新,其中最实用的应该是支持 mermaid 语法的流程图了. 这是 ...

  9. Python科学计算系列11—几何绘图

    1.显函数图像绘制 例:绘制y=sinx的图像 代码如下: from sympy import * x = symbols('x') plot(sin(x), (x, -2 * pi, 2 * pi) ...

  10. surging 集成SuperSocket预发布版本2.0

    一.概述 周末在家试着扩展SuperSocket,因为之前都是只支持.net framework, 后面出现支持.NET CORE 的SuperSocket 2.0 ,然后集成进来和dotnetty ...