python学习

This commit is contained in:
2019-07-22 18:07:14 +08:00
parent 0ba940441f
commit 5ee5b5035c
6 changed files with 199 additions and 86 deletions

191
.idea/workspace.xml generated
View File

@@ -2,10 +2,12 @@
<project version="4"> <project version="4">
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="d564f57a-9f96-4262-9481-cacdf2b8445c" name="Default" comment="python学习"> <list default="true" id="d564f57a-9f96-4262-9481-cacdf2b8445c" name="Default" comment="python学习">
<change beforePath="$PROJECT_DIR$/common/libs/Helper.py" beforeDir="false" afterPath="$PROJECT_DIR$/common/libs/Helper.py" afterDir="false" /> <change afterPath="$PROJECT_DIR$/common/models/log/AppAccessLog.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/config/base_setting.py" beforeDir="false" afterPath="$PROJECT_DIR$/config/base_setting.py" afterDir="false" /> <change afterPath="$PROJECT_DIR$/common/models/log/AppErrorLog.py" afterDir="false" />
<change afterPath="$PROJECT_DIR$/web/templates/common/tab_account.html" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/web/controllers/account/Account.py" beforeDir="false" afterPath="$PROJECT_DIR$/web/controllers/account/Account.py" afterDir="false" /> <change beforePath="$PROJECT_DIR$/web/controllers/account/Account.py" beforeDir="false" afterPath="$PROJECT_DIR$/web/controllers/account/Account.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/web/templates/account/index.html" beforeDir="false" afterPath="$PROJECT_DIR$/web/templates/account/index.html" afterDir="false" /> <change beforePath="$PROJECT_DIR$/web/templates/account/info.html" beforeDir="false" afterPath="$PROJECT_DIR$/web/templates/account/info.html" afterDir="false" />
</list> </list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
@@ -32,20 +34,60 @@
<file pinned="false" current-in-tab="false"> <file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/web/controllers/account/Account.py"> <entry file="file://$PROJECT_DIR$/web/controllers/account/Account.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="434"> <state relative-caret-position="226">
<caret line="20" lean-forward="true" selection-start-line="20" selection-end-line="20" /> <caret line="45" selection-start-line="45" selection-end-line="45" />
<folding> <folding>
<element signature="e#24#51#0" expanded="true" /> <element signature="e#24#68#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file pinned="false" current-in-tab="true"> <file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/web/templates/common/tab_account.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="310">
<caret line="10" column="6" lean-forward="true" selection-start-line="10" selection-start-column="6" selection-end-line="10" selection-end-column="6" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/web/templates/account/info.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="2046">
<caret line="66" column="14" lean-forward="true" selection-start-line="66" selection-start-column="14" selection-end-line="66" selection-end-column="14" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/common/models/log/AppAccessLog.py">
<provider selected="true" editor-type-id="text-editor">
<state>
<folding>
<element signature="e#16#90#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/common/models/log/AppErrorLog.py">
<provider selected="true" editor-type-id="text-editor">
<state>
<folding>
<element signature="e#16#78#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/web/templates/account/index.html"> <entry file="file://$PROJECT_DIR$/web/templates/account/index.html">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="257"> <state relative-caret-position="288">
<caret line="96" column="6" lean-forward="true" selection-start-line="96" selection-start-column="6" selection-end-line="96" selection-end-column="6" /> <caret line="97" column="14" lean-forward="true" selection-start-line="97" selection-start-column="14" selection-end-line="97" selection-end-column="14" />
</state> </state>
</provider> </provider>
</entry> </entry>
@@ -80,24 +122,6 @@
</provider> </provider>
</entry> </entry>
</file> </file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/web/templates/user/edit.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="62">
<caret line="2" column="36" selection-start-line="2" selection-start-column="36" selection-end-line="2" selection-end-column="36" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/web/templates/user/login.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="355">
<caret line="42" selection-start-line="42" selection-end-line="44" selection-end-column="14" />
</state>
</provider>
</entry>
</file>
</leaf> </leaf>
</component> </component>
<component name="FileTemplateManagerImpl"> <component name="FileTemplateManagerImpl">
@@ -154,9 +178,10 @@
<option value="$PROJECT_DIR$/web/controllers/user/User.py" /> <option value="$PROJECT_DIR$/web/controllers/user/User.py" />
<option value="$PROJECT_DIR$/web/templates/user/edit.html" /> <option value="$PROJECT_DIR$/web/templates/user/edit.html" />
<option value="$PROJECT_DIR$/common/libs/Helper.py" /> <option value="$PROJECT_DIR$/common/libs/Helper.py" />
<option value="$PROJECT_DIR$/web/controllers/account/Account.py" />
<option value="$PROJECT_DIR$/config/base_setting.py" /> <option value="$PROJECT_DIR$/config/base_setting.py" />
<option value="$PROJECT_DIR$/web/templates/account/index.html" /> <option value="$PROJECT_DIR$/web/templates/account/index.html" />
<option value="$PROJECT_DIR$/web/templates/account/info.html" />
<option value="$PROJECT_DIR$/web/controllers/account/Account.py" />
</list> </list>
</option> </option>
</component> </component>
@@ -199,6 +224,19 @@
<item name="common" type="462c0819:PsiDirectoryNode" /> <item name="common" type="462c0819:PsiDirectoryNode" />
<item name="libs" type="462c0819:PsiDirectoryNode" /> <item name="libs" type="462c0819:PsiDirectoryNode" />
</path> </path>
<path>
<item name="order" type="b2602c69:ProjectViewProjectNode" />
<item name="order" type="462c0819:PsiDirectoryNode" />
<item name="common" type="462c0819:PsiDirectoryNode" />
<item name="models" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="order" type="b2602c69:ProjectViewProjectNode" />
<item name="order" type="462c0819:PsiDirectoryNode" />
<item name="common" type="462c0819:PsiDirectoryNode" />
<item name="models" type="462c0819:PsiDirectoryNode" />
<item name="log" type="462c0819:PsiDirectoryNode" />
</path>
<path> <path>
<item name="order" type="b2602c69:ProjectViewProjectNode" /> <item name="order" type="b2602c69:ProjectViewProjectNode" />
<item name="order" type="462c0819:PsiDirectoryNode" /> <item name="order" type="462c0819:PsiDirectoryNode" />
@@ -217,6 +255,13 @@
<item name="templates" type="462c0819:PsiDirectoryNode" /> <item name="templates" type="462c0819:PsiDirectoryNode" />
<item name="account" type="462c0819:PsiDirectoryNode" /> <item name="account" type="462c0819:PsiDirectoryNode" />
</path> </path>
<path>
<item name="order" type="b2602c69:ProjectViewProjectNode" />
<item name="order" type="462c0819:PsiDirectoryNode" />
<item name="web" type="462c0819:PsiDirectoryNode" />
<item name="templates" type="462c0819:PsiDirectoryNode" />
<item name="common" type="462c0819:PsiDirectoryNode" />
</path>
<path> <path>
<item name="order" type="b2602c69:ProjectViewProjectNode" /> <item name="order" type="b2602c69:ProjectViewProjectNode" />
<item name="External Libraries" type="cb654da1:ExternalLibrariesNode" /> <item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
@@ -243,10 +288,10 @@
<component name="RecentsManager"> <component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS"> <key name="CopyFile.RECENT_KEYS">
<recent name="D:\order\web\templates\common" /> <recent name="D:\order\web\templates\common" />
<recent name="D:\order\common\models" />
<recent name="D:\order\web\static\js\user" /> <recent name="D:\order\web\static\js\user" />
<recent name="D:\order\web\templates\user" /> <recent name="D:\order\web\templates\user" />
<recent name="D:\order" /> <recent name="D:\order" />
<recent name="D:\order\web" />
</key> </key>
<key name="MoveFile.RECENT_KEYS"> <key name="MoveFile.RECENT_KEYS">
<recent name="D:\order\common\libs" /> <recent name="D:\order\common\libs" />
@@ -327,7 +372,14 @@
<option name="project" value="LOCAL" /> <option name="project" value="LOCAL" />
<updated>1563788503014</updated> <updated>1563788503014</updated>
</task> </task>
<option name="localTasksCounter" value="8" /> <task id="LOCAL-00008" summary="python学习">
<created>1563789519074</created>
<option name="number" value="00008" />
<option name="presentableId" value="LOCAL-00008" />
<option name="project" value="LOCAL" />
<updated>1563789519074</updated>
</task>
<option name="localTasksCounter" value="9" />
<servers /> <servers />
</component> </component>
<component name="TodoView"> <component name="TodoView">
@@ -343,7 +395,7 @@
<frame x="963" y="22" width="938" height="1028" extended-state="0" /> <frame x="963" y="22" width="938" height="1028" extended-state="0" />
<editor active="true" /> <editor active="true" />
<layout> <layout>
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.2777778" /> <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.2777778" />
<window_info id="Structure" order="1" side_tool="true" weight="0.25" /> <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
<window_info id="Favorites" order="2" side_tool="true" /> <window_info id="Favorites" order="2" side_tool="true" />
<window_info id="Project Explorer" order="3" /> <window_info id="Project Explorer" order="3" />
@@ -358,7 +410,7 @@
<window_info anchor="bottom" id="TODO" order="6" weight="0.32960895" /> <window_info anchor="bottom" id="TODO" order="6" weight="0.32960895" />
<window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" /> <window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" />
<window_info anchor="bottom" id="Database Changes" order="8" show_stripe_button="false" /> <window_info anchor="bottom" id="Database Changes" order="8" show_stripe_button="false" />
<window_info active="true" anchor="bottom" id="Terminal" order="9" visible="true" weight="0.3642458" /> <window_info anchor="bottom" id="Terminal" order="9" visible="true" weight="0.3642458" />
<window_info anchor="bottom" id="Event Log" order="10" side_tool="true" /> <window_info anchor="bottom" id="Event Log" order="10" side_tool="true" />
<window_info anchor="bottom" id="Version Control" order="11" /> <window_info anchor="bottom" id="Version Control" order="11" />
<window_info anchor="bottom" id="Python Console" order="12" /> <window_info anchor="bottom" id="Python Console" order="12" />
@@ -382,37 +434,6 @@
<option name="LAST_COMMIT_MESSAGE" value="python学习" /> <option name="LAST_COMMIT_MESSAGE" value="python学习" />
</component> </component>
<component name="editorHistoryManager"> <component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/venv/Lib/site-packages/flask/templating.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150">
<caret line="124" column="4" selection-start-line="124" selection-start-column="4" selection-end-line="124" selection-end-column="4" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/common/libs/UrlManager.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="62">
<caret line="2" column="6" selection-start-line="2" selection-start-column="6" selection-end-line="2" selection-end-column="6" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/manager.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="165">
<caret line="9" column="18" selection-start-line="9" selection-start-column="18" selection-end-line="9" selection-end-column="18" />
<folding>
<element signature="e#24#59#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/web/controllers/static.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="186">
<caret line="7" column="47" selection-start-line="7" selection-start-column="47" selection-end-line="7" selection-end-column="47" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/mina/app.json"> <entry file="file://$PROJECT_DIR$/mina/app.json">
<provider selected="true" editor-type-id="text-editor" /> <provider selected="true" editor-type-id="text-editor" />
</entry> </entry>
@@ -721,20 +742,52 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/web/controllers/account/Account.py"> <entry file="file://$PROJECT_DIR$/web/templates/account/index.html">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="434"> <state relative-caret-position="288">
<caret line="20" lean-forward="true" selection-start-line="20" selection-end-line="20" /> <caret line="97" column="14" lean-forward="true" selection-start-line="97" selection-start-column="14" selection-end-line="97" selection-end-column="14" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/common/models/log/AppAccessLog.py">
<provider selected="true" editor-type-id="text-editor">
<state>
<folding> <folding>
<element signature="e#24#51#0" expanded="true" /> <element signature="e#16#90#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/web/templates/account/index.html"> <entry file="file://$PROJECT_DIR$/common/models/log/AppErrorLog.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="257"> <state>
<caret line="96" column="6" lean-forward="true" selection-start-line="96" selection-start-column="6" selection-end-line="96" selection-end-column="6" /> <folding>
<element signature="e#16#78#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/web/templates/account/info.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="2046">
<caret line="66" column="14" lean-forward="true" selection-start-line="66" selection-start-column="14" selection-end-line="66" selection-end-column="14" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/web/controllers/account/Account.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="226">
<caret line="45" selection-start-line="45" selection-end-line="45" />
<folding>
<element signature="e#24#68#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/web/templates/common/tab_account.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="310">
<caret line="10" column="6" lean-forward="true" selection-start-line="10" selection-start-column="6" selection-end-line="10" selection-end-column="6" />
</state> </state>
</provider> </provider>
</entry> </entry>

View File

@@ -0,0 +1,19 @@
# coding: utf-8
from sqlalchemy import BigInteger, Column, DateTime, Integer, String, Text
from sqlalchemy.schema import FetchedValue
from application import db
class AppAccessLog(db.Model):
__tablename__ = 'app_access_log'
id = db.Column(db.Integer, primary_key=True)
uid = db.Column(db.BigInteger, nullable=False, index=True, server_default=db.FetchedValue())
referer_url = db.Column(db.String(255), nullable=False, server_default=db.FetchedValue())
target_url = db.Column(db.String(255), nullable=False, server_default=db.FetchedValue())
query_params = db.Column(db.Text, nullable=False)
ua = db.Column(db.String(255), nullable=False, server_default=db.FetchedValue())
ip = db.Column(db.String(32), nullable=False, server_default=db.FetchedValue())
note = db.Column(db.String(1000), nullable=False, server_default=db.FetchedValue())
created_time = db.Column(db.DateTime, nullable=False, server_default=db.FetchedValue())

View File

@@ -0,0 +1,15 @@
# coding: utf-8
from sqlalchemy import Column, DateTime, Integer, String, Text
from sqlalchemy.schema import FetchedValue
from application import db
class AppErrorLog(db.Model):
__tablename__ = 'app_error_log'
id = db.Column(db.Integer, primary_key=True)
referer_url = db.Column(db.String(255), nullable=False, server_default=db.FetchedValue())
target_url = db.Column(db.String(255), nullable=False, server_default=db.FetchedValue())
query_params = db.Column(db.Text, nullable=False)
content = db.Column(db.String, nullable=False)
created_time = db.Column(db.DateTime, nullable=False, server_default=db.FetchedValue())

View File

@@ -1,7 +1,9 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from flask import Blueprint,request,redirect from flask import Blueprint,request,redirect
from common.libs.Helper import ops_render,iPagination from common.libs.Helper import ops_render,iPagination
from common.libs.UrlManager import UrlManager
from common.models.User import User from common.models.User import User
from common.models.log.AppAccessLog import AppAccessLog
route_account = Blueprint( 'account_page',__name__ ) route_account = Blueprint( 'account_page',__name__ )
from application import app,db from application import app,db
@route_account.route( "/index" ) @route_account.route( "/index" )
@@ -31,7 +33,20 @@ def index():
@route_account.route( "/info" ) @route_account.route( "/info" )
def info(): def info():
return ops_render( "account/info.html" ) resp_data = {}
req = request.args
uid = int(req.get('id', 0))
reback_url = UrlManager.buildUrl("/account/index")
if uid < 1:
return redirect(reback_url)
info = User.query.filter_by(uid=uid).first()
if not info:
return redirect(reback_url)
resp_data['info'] = info
return ops_render("account/info.html", resp_data)
@route_account.route( "/set" ) @route_account.route( "/set" )
def set(): def set():

View File

@@ -1,22 +1,12 @@
{% extends "common/layout_main.html" %} {% extends "common/layout_main.html" %}
{% block content %} {% block content %}
<div class="row border-bottom"> {% include "common/tab_account.html" %}
<div class="col-lg-12">
<div class="tab_title">
<ul class="nav nav-pills">
<li class="current">
<a href="{{ buildUrl('/account/index') }}">账户列表</a>
</li>
</ul>
</div>
</div>
</div>
<div class="row m-t"> <div class="row m-t">
<div class="col-lg-12"> <div class="col-lg-12">
<div class="row"> <div class="row">
<div class="col-lg-12"> <div class="col-lg-12">
<div class="m-b-md"> <div class="m-b-md">
<a class="btn btn-outline btn-primary pull-right" href="{{ buildUrl('/account/set') }}"> <a class="btn btn-outline btn-primary pull-right" href="{{ buildUrl('/account/set') }}?id={{ info.uid }}">
<i class="fa fa-pencil"></i>编辑 <i class="fa fa-pencil"></i>编辑
</a> </a>
<h2>账户信息</h2> <h2>账户信息</h2>
@@ -28,9 +18,9 @@
<img class="img-circle circle-border" src="{{ buildStaticUrl('/images/common/avatar.png') }}" width="100px" height="100px"> <img class="img-circle circle-border" src="{{ buildStaticUrl('/images/common/avatar.png') }}" width="100px" height="100px">
</div> </div>
<div class="col-lg-10"> <div class="col-lg-10">
<p class="m-t">姓名:gfddf</p> <p class="m-t">姓名:{{ info.nickname }}</p>
<p>手机:dfgdd</p> <p>手机:{{ info.mobile }}</p>
<p>邮箱:dfgdg</p> <p>邮箱:{{ info.email }}</p>
</div> </div>
</div> </div>
<div class="row m-t"> <div class="row m-t">
@@ -56,7 +46,17 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr><td colspan="2">暂无数据</td></tr> {% if access_list %}
{% for item in access_list %}
<tr>
<td>{{ item.created_time }}</td>
<td>{{ item.target_url }}</td>
<td></td>
</tr>
{% endfor %}
{% else %}
<tr><td colspan="2">暂无数据~~</td></tr>
{% endif %}
</tbody> </tbody>
</table> </table>
</div> </div>

View File

@@ -0,0 +1,11 @@
<div class="row border-bottom">
<div class="col-lg-12">
<div class="tab_title">
<ul class="nav nav-pills">
<li class="current">
<a href="{{ buildUrl('/account/index') }}">账户列表</a>
</li>
</ul>
</div>
</div>
</div>