1. 程式人生 > >1 專案簡介 基本頁面 git使用.md

1 專案簡介 基本頁面 git使用.md

專案簡介

為什麼做一個模仿 Instagram 的應用

  • 偏後端和後臺的開發
  • 充分利用 tornado 的特點
  • 積累專案經驗,鞏固知識點

Instagram 主要組成

  • 發現或最近上傳的圖片頁面
  • 所關注的使用者圖片流
  • 單個圖片詳情頁面
  • 資料庫 Database
  • 使用者檔案 User Profile

可以附加的功能

  • 圖片新增文字
  • 圖片修改
  • 其他有用的小功能

怎麼做

  • 從最簡單開始,迭代增加功能
  • 使用者,登陸,關注等
  • 資料庫儲存
  • UI 和 Web 介面美化
  • 外部連線

開始功能

執行基本程式

  • handlers 配置
  • templates 和 static 目錄設定

三個基本頁面

  • 發現或最近上傳的圖片頁面 /explore ExploreHandler

  • 所關注的使用者圖片流 / IndexHandler

  • 單個圖片詳情頁面 /post/id PostHandler

程式碼

專案初始化 建立基本頁面

import tornado.ioloop
import tornado.options
import tornado.web
from tornado.options import define, options

from handlers import main

define('port', default='8000', type=int, help='Listening port')


class Application
(tornado.web.Application): def __init__(self): handlers = [ ('/', main.IndexHandler), ('/explore', main.ExploreHandler), ('/post/(?P<post_id>[0-9]+)', main.PostHandler), ] settings = dict( debug=True, template_path='template', )
super(Application, self).__init__(handlers, **settings) application = Application() if __name__ == '__main__': tornado.options.parse_command_line() application.listen(options.port) print("Server start on port {}".format(str(options.port))) tornado.ioloop.IOLoop.current().start()
import tornado.web


class IndexHandler(tornado.web.RequestHandler):
   """
   Home page for user,photo feeds.
   """

   def get(self, *args, **kwargs):
      # self.write('ok...')
      self.render('index.html')


class ExploreHandler(tornado.web.RequestHandler):
   """
   Explore page ,photo of other users.
   """

   def get(self, *args, **kwargs):
      # self.write('ok...')
      self.render('explore.html')


class PostHandler(tornado.web.RequestHandler):
   """
   Single photo page,and maybe comments
   """

   def get(self, *args, **kwargs):
      self.render('post.html', post_id=kwargs['post_id'])

base.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title %}Title{% end %}</title>
</head>
<body>
{% block content %}
    base content
{% end%}


</body>
</html>

index.html

{% extends 'base.html' %}

{% block title %}
    index page
{% end %}

{% block content %}
    index content
{% end %}

explore.html

{% extends 'base.html' %}

{% block title %}
    explore page
{% end %}

{% block content %}
    explore content
{% end %}

post.html

{% extends 'base.html' %}

{% block title %}
    post page
{% end %}

{% block content %}
    post of {{ post_id }} content
{% end %}

增加簡單的圖片顯示

import tornado.ioloop
import tornado.options
import tornado.web
from tornado.options import define, options

from handlers import main

define('port', default='8000', type=int, help='Listening port')


class Application(tornado.web.Application):
   def __init__(self):
      handlers = [
         ('/', main.IndexHandler),
         ('/explore', main.ExploreHandler),
         ('/post/(?P<post_id>[0-9]+)', main.PostHandler),
      ]
      settings = dict(
         debug=True,
         template_path='template',
         static_path='static',
      )

      super(Application, self).__init__(handlers, **settings)


application = Application()

if __name__ == '__main__':
   tornado.options.parse_command_line()
   application.listen(options.port)
   print("Server start on port {}".format(str(options.port)))
   tornado.ioloop.IOLoop.current().start()
import tornado.web


class IndexHandler(tornado.web.RequestHandler):
   """
   Home page for user,photo feeds.
   """

   def get(self, *args, **kwargs):
      self.render('index.html')


class ExploreHandler(tornado.web.RequestHandler):
   """
   Explore page ,photo of other users.
   """

   def get(self, *args, **kwargs):
      self.render('explore.html')


class PostHandler(tornado.web.RequestHandler):
   """
   Single photo page,and maybe comments
   """

   def get(self, *args, **kwargs):
      self.render('post.html', post_id=kwargs['post_id'])

base.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title %}Title{% end %}</title>
</head>
<body>
{% block content %}
    base content
{% end%}


</body>
</html>

index.html

{% extends 'base.html' %}

{% block title %}
index page
{% end %}

{% block content %}
    {% for i in range(1,5) %}
        <img src="{{ static_url("images/{}.jpg".format(i)) }} " width="666">
    {% end %}
{% end %}

explore.html

{% extends 'base.html' %}

{% block title %}
    explore page
{% end %}

{% block content %}
    {% for i in range(1,5) %}
        <img src="{{ static_url("images/{}.jpg".format(i)) }} " width="333">
    {% end %}
{% end %}

post.html

{% extends 'base.html' %}

{% block title %}
    post page
{% end %}

{% block content %}
    <img src="{{ static_url("images/{}.jpg".format(post_id)) }} " width=666">
{% end %}

Git 使用

使用參考文件

git 使用簡易指南 
http://www.bootcss.com/p/git-guide/


在Pycharm中使用GitHub - 劉江liujiangblog.com - 部落格園  https://www.cnblogs.com/feixuelove1009/p/5955332.html


Git - 起步  
https://git-scm.com/book/zh/v1/%E8%B5%B7%E6%AD%A5


初次執行配置使用者資訊(在 cmd 裡執行)

git config --global user.name "John Doe"

git config --global user.email [email protected]

Linux 安裝

sudo apt-get install git

git init 	建立新倉庫 
git status	 檢視狀態
git add *  	新增  (把改動新增到快取區)
git status
git commit -m 'init commit' 提交 (改動已經提交到了 HEAD,但是還沒到你的遠端倉庫)
git status
git config --global user.name "wushanshan"
git config --global user.email [email protected]



如果修改了 app.py 檔案
git add app.py
git status
git commit -m 'modify app.py'
git diff			檢視改變
git checkout -- . 	撤銷更改 

如果修改了兩個檔案 一起提交
git add *
git status
git commit -m 'modify two files'



下載地址

作業

基本的三個頁面

額外:Git 使用