整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          HTML/CSS中可直接輸數據的表格

          lt;table>和<form>結合效果圖:

          在HTML/CSS 中,我們經常用HTML來布局和填充內容,用CSS來添加效果,修飾內容和布局,使整個頁面變得更好看。


          HTML和CSS的配合方法:

          即在<head></head>標簽內添加CSS樣式表的鏈接:

          代碼展示如下:

          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
          	<title>Make a Table Frame</title>
           <link rel="stylesheet" type="text/css" href="CSS/tableframe.css" >
          </head>
          

          CSS選擇器

          定義:

          對帶有指定屬性的 HTML 元素設置樣式。

          注意:

          只有在規定了 !DOCTYPE 時,IE7 和 IE8 才支持屬性選擇器。在 IE6 及更低的版本中,不支持屬性選擇。

          功能:

          “選擇器”指明了{}中的“樣式”的作用對象,也就是“樣式”作用于網頁中的哪些元素。

          CSS中的選擇器有三個:

          標簽選擇器、class類選擇器、id選擇器

          1.標簽選擇器樣式表:a{}、 div{}、table{} ...

          {對全局所有的選中類型標簽的樣式修改}

          2.class類選擇器 樣式表: .class{}

          {在HTML中每個標簽都可以同時綁定多個類名,每個標簽都可以設置class;同一個界面中class是不可重復}

          3. id選擇器樣式表: #d1 {}

          {每個標簽都可有id,每個頁面不可重復id,}

          【一個HTML標簽只能綁定一個id屬性,一個HTML標簽可以綁定多個class屬性】

          單純選擇<div>標簽的時候 是對全局的的(所有的)<div>進行修飾;

          選擇器優先級:

          id選擇器>class類選擇器>標簽選擇器

          所以有id和class 選擇器的標簽將不會被覆蓋。交叉時是按照優先級覆蓋顯示的。


          <table>部分:電腦配件管理表2018年5月-8月

          單純的HTML 表格表單內容

          標題<caption>標簽:

          表格的標題<caption>的內容填充(HTML)

          <caption> 表格標題</caption> 
          

          標題<caption>的樣式修飾(CSS)

          table.formdata caption
          {
          	text-shadow: #FF00ff;
          	text-align: center;
          	padding-bottom: 6px;
          	font-weight: bold;
          }
          

          其他<table>標簽相關內容可參考 HTML中表格的實例應用 一文。


          <form>部分:

          form在網頁中主要負責數據采集功能。

          一個表單有三個基本組成部分:

          (1)表單標簽:包含了處理表單數據所用CGI程序的URL以及數據提交到服務器的方法。

          (2)表單域:包含了文本框、密碼框、隱藏域、多行文本框、復選框、單選框、下拉選擇框和文件上傳框等。

          (3)表單按鈕:提交按鈕、復位按鈕和一般按鈕;用于將數據傳送到服務器上的CGI腳本或者取消輸入。還可以用表單按鈕來控制其他定義了處理腳本的處理工作。

          <input>標簽

          定義:

          <input> 標簽規定用戶可輸入數據的輸入字段。

          根據不同的 type 屬性,輸入字段有多種形態。輸入字段可以是文本字段、復選框、密碼字段、單選按鈕、按鈕等等

          語法代碼:

          <input type="value" >
          

          實例代碼:

          <td><input type="text" name="Mainboard 6月" id="Mainboard 6月"></td>
          

          關系展示:


          <input>中 submit屬性 和reset屬性

          實例代碼:

          <p>

          <input type="submit" name="btnSubmit" id="btnSubmit" value="Add Data" class="btn">

          <input type="reset" value= "Reset All" class="btn">

          </p>

          實例展示:

          <input>標簽的其他屬性值:


          <input>標簽外是否添加<form>標簽?

          input標簽外是否添加form標簽需要按情形區分:

          應用場景的區別:

          1.所有向后臺提交數據(包括原生和ajax提交)的<input>都建議用<form>包裹.

          2.如果只是用來做前臺交互效果則不推薦使用form包裹。

          但提交數據時,其實也可以不用form包裹input標簽:

          1.如果有form標簽,在點擊提交銨鈕時,瀏覽器自動收集參數,并打包一個http請求到服務器,完成表單提交。在這一過程中,瀏覽器會根據method的不同,將參數編碼后,放在urI中(get),或者放在請求的data中(post)。然后發送到服務器。

          2.如果沒有form,post方式的提交要使用ajax手工完成。get方式的提交需要自己拼接url。


          <form>表單其他相關內容可參考 HTML中 表單 的應用實例 一文。


          最后,附帶一下該可輸入的EXCEL表格的源碼。

          HTML code:

          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml">
          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
          	<title>Make a Table Frame</title>
           <link rel="stylesheet" type="text/css" href="CSS/tableframe.css" >
          </head>
          <body image="">
           <form method="psot">
          	<table border="1px" class="formdata">
           	<caption>電腦配件管理表2018年5月-8月</caption>
           	<tr>
           		<th></th>
           		<th scope="col">5月</th>
           		<th scope="col">6月</th>
           		<th scope="col">7月</th>
           		<th scope="col">8月</th>
           	</tr>
           	<tr>
           		<th scope="row">Hard Disk</th>
           		<td><input type="text" name="Hard Disk 5月" id="Hard Disk 5月"></td>
           		<td><input type="text" name="Hard Disk 6月" id="Hard Disk 6月"></td>
           		<td><input type="text" name="Hard Disk 7月" id="Hard Disk 7月"></td>
           		<td><input type="text" name="Hard Disk 8月" id="Hard Disk 8月"></td>
           	</tr>
           	<tr>
           		<th scope="row">Mainboard</th>
           		<td><input type="text" name="Mainboard 5月" id="Mainboard 5月"></td>
           <td><input type="text" name="Mainboard 6月" id="Mainboard 6月"></td>
           <td><input type="text" name="Mainboard 7月" id="Mainboard 7月"></td>
           <td><input type="text" name="Mainboard 8月" id="Mainboard 8月"></td>
           	</tr>
           	<tr>
           		<th scope="row">Case</th>
           		<td><input type="text" name="Case 5月" id="Case 5月"></td>
           <td><input type="text" name="Case 6月" id="Case 6月"></td>
           <td><input type="text" name="Case 7月" id="Case 7月"></td>
           <td><input type="text" name="Case 8月" id="Case 8月"></td>
           	</tr>
           	<tr>
           	 <th scope="row">Power</th>
           	 <td><input type="text" name="Power 5月" id="Power 5月"></td>
           <td><input type="text" name="Power 6月" id="Power 6月"></td>
           <td><input type="text" name="Power 7月" id="Power 7月"></td>
           <td><input type="text" name="Power 8月" id="Power 8月"></td>	
           	</tr>
           	<tr>
           		<th scope="row">CPU Fan</th>
           		<td><input type="text" name="CPU Fan 5月" id="CPU Fan 5月"></td>
           <td><input type="text" name="CPU Fan 6月" id="CPU Fan 6月"></td>
           <td><input type="text" name="CPU Fan 7月" id="CPU Fan 7月"></td>
           <td><input type="text" name="CPU Fan 8月" id="CPU Fan 8月"></td> 
           	</tr>
           	<tr>
           		<th scope="row">Total</th>
           		<td><input type="text" name="Total 5月" id="Total 5月"></td>
           <td><input type="text" name="Total 6月" id="Total 6月"></td>
           <td><input type="text" name="Total7月" id="Total 7月"></td>
           <td><input type="text" name="Total 8月" id="Total 8月"></td>
           	</tr>
          	</table>
           <p>
           <input type="submit" name="btnSubmit" id="btnSubmit" value="Add Data" class="btn">
           <input type="reset" value= "Reset All" class="btn">
           </p>
           </form>
          </body>
          </html>
          

          CSS code :

          body
          {
          	font-family: Arial;
          	/*background-image: url(image/mainroad.jpg) no-repeat;*/
          	background-color: #00ff00;
          	background-size: 100%;
          }
          table.formdata
          {
          	width: 300px;
          	height: 150px;
          	border: 2px solid #F00;
          	border-collapse: collapse;
          	font-family: Arial;
          }
          table.formdata caption
          {
          	text-shadow: #FF00ff;
          	text-align: center;
          	padding-bottom: 6px;
          	font-weight: bold;
          }
          table.formdata th
          {
          	border:1px solid #be34hc;
          	background-color: #E2E2E2;
          	color:#000000;
          	text-aglin:center;
          	font-weight: normal;
          	padding: 2px 8px 2px 6px;
          	margin: 0px;
          }
          table.formdata input
          {
          	width: 100px;
          	padding: 1px 3px 1px 3px;
          	margin: 0px;
          	border:none;
          	font-family: Arial;
          }
          .btn
          {
          	width:100px;
          	background-color: #FF00ee;
          	border:1px solid #00f2f2;
          	font-family: Arial;
          }
          

          本文部分內容來自網絡,如有侵權,請聯系修改。

          django開發網頁中經常會遇到需要將本地的文件上傳到服務器,這里我們就需要通過post請求將數據推送到服務器上去

          1 ,定義視圖

          def upLoadPic(request):

          return render(request, 'booktest/upLoadPic.html')

          2 ,定義URL

          path('upLoadPic/',views.upLoadPic,name='upLoadPic'),

          3 ,前臺界面html

          <!DOCTYPE html>

          <html lang="en">

          <head>

          <meta charset="UTF-8">

          <title>Title</title>

          </head>

          <body>

          <form action="/uploadHandler/" method="post" enctype="multipart/form-data">

          {% csrf_token %}

          <input type="file" name="pic1">

          <br>

          <input type="submit" value="上傳">

          </form>

          </body>

          </html>

          其實這里也就是一個表單,通過post請求提交相關的數據

          從上面可以看到,當點擊提交的時候.post請求會攜帶數據發送到 這個地址,那我在定義一個處理數據的視圖

          上傳部分

          def uploadHandler(request):

          if request.method == "POST":

          f1 = request.FILES['pic1']

          fname = '%scar/%s'%(MEDA_PATH, f1.name)

          #fname = 'static/media/car/a.png'

          print(fname)

          with open(fname, 'wb+') as pic:

          # 根據上傳的流中的數據一點一點往內存中寫

          for c in f1.chunks():

          pic.write(c)

          return HttpResponse(fname)

          else:

          return HttpResponse("ERROR")

          配置下 URL: path('uploadHandler/', views.uploadHandler,name='uploadHandler')

          注釋:解釋下上面的內容,當post請求攜帶數據傳到相關的頁面后,這個接收頁面,

          1. 首先判斷是不是POST請求,表單提交一定是post請求

          2. 通過request.FILES['pic1'] 拿到指定的文件 pic1是傳過來的鍵

          3. 拼接需要存放的目標地址

          4. 通過with,使用二進制的寫權限向指定目錄中寫

          5. 這里的 f1.chunks()表示將數據分塊寫到相關位置

          天是劉小愛自學Java的第156天。

          感謝你的觀看,謝謝你。

          學習計劃安排如下:

          • 開始前臺門戶系統的學習。
          • 今天只涉及到系統搭建,以及一些簡單的介紹,并不涉及到具體的業務。
          • 明天開始進入具體的業務學習。

          后臺管理系統的學習就暫且告一段落了,其實無外乎就是各種增刪改查。

          筆記中主要是記錄了查詢和新增操作,關于修改和刪除基本也是大同小異。

          一、前臺門戶介紹

          后臺管理系統是給網站管理人員看的,前幾天寫的功能主要都用于對商品的管理。

          管理人員通過該系統控制商品的樣式啊,是否上下架,庫存啊這些。

          而前臺門戶系統是給用戶看的,如下圖:

          現在主流電商網站的前臺門戶系統,基本上都是這么一個樣式。

          以前后臺管理系統較簡單,我可以在對應頁面做一個修改,從而將其轉換成劉小愛商城。

          現在前臺門戶系統較為復雜,有的還涉及到圖片,我一時修改不過來,索性就不改了。

          但愿不會說我在打廣告什么的哈哈哈,到時候被平臺給屏蔽了可就不好了。

          那使用到的技術是什么呢?

          以前后臺系統使用的是SPA(單頁應用),SPA理解起來其實非常簡單。

          它就是只有一個html文件,其它的都是以vue組件的形式拼接,從而實現了頁面切換。

          SPA的好處在于速度快,但是第一次加載慢,它等于是第一次將靜態資源全部加載下來了,所以后續頁面切換時就非常流暢。

          但是這樣有一個問題,不利于SEO優化,當然還有緩存的問題,在此就不說明了。

          這個SEO是啥?我大致說下,當然不可能將其說得很清楚,我自己也不太懂,但作為一名程序員對這些有一定的了解肯定是沒壞處的。

          比如說用戶要買東西,他可能會在百度上面搜索,那百度出來的頁面是如何排序的呢?

          這就涉及到SEO搜索引擎優化了,如果優化好,會排在更前面。

          當然最前面的肯定是直接給百度錢打廣告的。

          而百度搜索引擎的一個機制,是利用爬蟲爬別人的網站,再顯示出來。

          如果只是SPA單頁應用,爬蟲就只能爬到一個html文件,不利于SEO搜索引擎優化。

          當然做一個強調

          SEO這塊我也不是太了解,所以只是簡單地做一個描述,自己了解的說不定也有問題。

          總之SEO對于網站來說很重要,會增加搜索后的排名,使用單頁應用就不太合適了。

          所以前臺門戶系統使用多頁應用

          依舊是前后端分離,不過前端頁面會獨立多個html頁面,每個頁面使用vue完成渲染。

          做一個總結就是:

          • 前端門戶系統使用vue+Nuxt實現多頁應用
          • 后臺管理系統使用vue+vuetify實現單頁應用

          二、搭建前臺系統

          后臺管理系統中用了webpack,很簡單地就實現了熱部署,這個太重要了,不像Java代碼每次一改就要重啟微服務,很麻煩。

          而此處使用的叫live-server,其翻譯過來就是“活的服務器”,很生動形象。

          安裝live-server

          使用npm命令完成安裝即可,命令如下:

          npm install -g live-server

          這里使用的是全局安裝,以后任意位置可用。

          • npm:是Node.js的包管理工具。
          • install:也就是安裝的意思。
          • -g:也就是表示全局安裝,我大膽地猜測下應該就是global的首字母縮寫。
          • live-server:活的服務器。

          安裝好了之后運行live-server,同時可以使用命令指定端口:

          命令:live-server --port=9002

          port即端口的意思,我們這里指定9002為前臺門戶系統的端口。

          域名即為本地域名,通過域名+端口就能訪問到對應的頁面了。

          和后臺管理系統一樣,為了讓域名更加地正規好看,我們使用SwitchHosts+nginx實現域名和端口的反向代理。

          該方式在第142天的學習筆記中專門講解過,這里做一個簡單的回顧:

          在SwitchHosts配置我們想要的一個域名為本地域名,也就是說當在瀏覽器上訪問該域名時,系統會自動認為它對應本地域名。

          而瀏覽器上如果不指定端口時,會默認解析成80端口,所以在nginx配置中監聽該端口,并跳轉到前臺門戶系統路徑。

          所以當在瀏覽器上訪問對應域名時,實際上訪問的就是nginx中配置的那個路徑。

          三、業務需求

          今天不涉及到具體的業務實現,但是對接下來一段時間的學習做一個了解。

          ①搜索業務的實現

          一個電商網站,搜索肯定是核心關鍵了。

          現在可不像以前那樣,還用什么模糊查詢,效率太低了,有專門的搜索技術,明天開始就專門學習。

          ②商品詳細以及RabbitMQ?

          這是個啥還不太清楚,后續學到了再說。

          ③用戶中心的實現

          最常見的也就是用戶的注冊和登錄了,這個以前就實現過好幾次了。

          當然還有其它的一些比如個人信息管理呀,用戶地址管理,收藏管理……等。

          ④購物車以及下單的實現

          購物車也是商城非常核心的一環,并且肯定是需要使用到支付的,微信支付或者支付寶支付等多種方式。

          最后

          行有不得反求諸己,我是@劉小愛

          一個白天上班晚上學習的95后滬漂,不為其它,只為學會自律做好自己,也愿我的每日打卡能給你帶來勇氣,歡迎點贊關注和評論。


          主站蜘蛛池模板: 成人区人妻精品一区二区不卡视频| 一区二区三区免费视频观看| 韩国福利影视一区二区三区| 精品无码国产一区二区三区51安 | 中日韩精品无码一区二区三区| 精品福利一区二区三区精品国产第一国产综合精品 | 精彩视频一区二区三区| 3d动漫精品啪啪一区二区中 | 精品少妇一区二区三区在线 | 四虎一区二区成人免费影院网址| 久久久无码一区二区三区| 国产成人AV一区二区三区无码 | 亚洲一区二区三区首页| 丰满人妻一区二区三区免费视频 | 国产91一区二区在线播放不卡| 日韩视频一区二区在线观看| 伊人久久一区二区三区无码 | | 日韩制服国产精品一区| 琪琪see色原网一区二区| 日韩有码一区二区| 日本高清无卡码一区二区久久| 中文字幕一区视频| 无码乱人伦一区二区亚洲| 亚洲AV无码一区二区二三区软件| 无码aⅴ精品一区二区三区浪潮| 日韩精品一区二区三区四区| 99精品国产高清一区二区| 麻豆AV一区二区三区久久 | 亚洲一区精品无码| 台湾无码AV一区二区三区| 中文字幕不卡一区| 亚洲一区综合在线播放| 国产高清不卡一区二区| 精品无码人妻一区二区免费蜜桃| 亚洲第一区视频在线观看 | 国产另类ts人妖一区二区三区| 相泽亚洲一区中文字幕| 一区二区三区在线|欧| 无码人妻精品一区二区三区久久久 | 国产精品美女一区二区|