今天发布自己的第一个网站,网站内容是关于自己家乡的美景,效果图如下:网站地址是: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. .NET 10首个预览版发布:重大改进与新特性概览!

    前言 .NET 团队于2025年2月25日发布博文,宣布推出 .NET 10 首个预览版更新,重点改进.NET Runtime.SDK.Libraries .C#.ASP.NET Core.Blazo ...

  2. Selenium IDE 使用过程

    这篇文章主要介绍如何成功搭建firefox与Selenium IDE环境及IDE使用过程,以登录功能介绍. Selenium IDE是Firefox浏览器的一款插件,实现网页的录制及回放,可以脚本导出 ...

  3. 【离线地图】地图瓦片css复杂滤镜线段绘制

    需求: 目前已经对地图瓦片做了复杂滤镜的黑夜展示,现在又要在这个图片上绘制新的线段等内容,且不能被这个复杂滤镜影响,变成奇奇怪怪的颜色. 同时因为框架限制,只能在这个img上绘制 思考: 1.既然不想 ...

  4. IvorySQL 4.0 发布:全面支持 PostgreSQL 17

    2024 年 12 月 24 日,IvorySQL 4.0 发布了! 这是 2024 年以来发布的最新版本,相较于上个版本,有了较大的变化. 该版本有多项增强:全面支持 PostgreSQL 17,新 ...

  5. DEV插件--Spreadsheet1电子表格

    常用操作Spreadsheet常用属性标题栏是否可见 Spreadsheet1.TitleBar.Visible=true标题栏背景颜色 Spreadsheet1.TitleBar.Interior. ...

  6. SpreadJS V18.0 新版本发布!数据驱动革新,效率与体验全面升级

    表格控件SpreadJS推出V18.0及V8.0版本!本次更新聚焦数据管理.多语言适配.报表与透视表增强,新增多项重磅功能,赋能企业高效应对复杂业务场景.核心亮点速览 一.表格绑定数据源:直连数据管理 ...

  7. 获取不到http请求头自定义参数

    对外提供的API,需请求方在http请求头中传app_id(下划线分割) 然后服务端通过request.getHeader("app_id")获取不到对应的参数值 排查原因,是因为 ...

  8. [框架应用系列:Quartz快速上手] Java定时任务解决方案之Quartz集群

    Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中.它提供了巨大的灵 活性而不牺牲简单性.你能够用它来为执行一个作业而创建简单的或复杂的调度. ...

  9. Web前端入门第 26 问:CSS 浏览器兼容性怎么查?

    学编码之前,当先学排查问题的能力. 在那个 IE 浏览器 当道的时代,前端开发简直就是刀耕火种一般,一个简单的圆角模块,嘿...不好意思,它不支持,用图片吧. 但凡经历过 IE 的洗礼,就会知道当时哪 ...

  10. Codeforces Round 971 (Div. 4)

    C. The Legend of Freya the Frog 因为是从x开始跳,贪心的取肯定是直接用max(a,b)/d向上取整然后再乘2,但是要注意,如果再x到达之前,y已经是到达了,也就是某次以 ...