目录

一、web2py

二、使用步骤

1.找到一个可以帮助网站运营的工具——pythonanywhere

1)创建账户;

2)创建网站

3) 网站管理

2.我的开端

1)删除example app

2)创建新的app sophia

3)修改参数

 4)修饰

前言        

已经想学开发网站很久了,奈何只会Python,但不会HTML语言。


一、web2py

        当初学时觉得最容易上手的工具。

二、使用步骤

1.找到一个可以帮助网站运营的工具——pythonanywhere

入口:https://www.pythonanywhere.com/

1)创建账户;

Start running……;

用python做网站 python做网站教程_用python做网站

 Create a Beginner account;

 

用python做网站 python做网站教程_1024程序员节_02

 注册;

 

用python做网站 python做网站教程_pandas_03

 创建成功;

用python做网站 python做网站教程_机器学习_04

2)创建网站

点击Open Web tab后Add a new web app(我已经有一个创建好的网站被我停用了,这时免费的网站只能创建一个,所以需要删除原来的网站才能创建新的);

用python做网站 python做网站教程_pandas_05

 一路next(什么注册选择都自己选);

用python做网站 python做网站教程_机器学习_06

 using this domain already exists说明网络仓库已经有这个文件夹了,而创建新的网站APP需要空的文件路径,因此直接把上面的Directory路径修改一下就好了,Admin Password是网站管理密码(创建需要等待几分钟);

用python做网站 python做网站教程_用python做网站_07

 成功创建,接下来是网站管理了;

        每当你对网站进行修改后,若是刷新网站后没有更新,则是要点击下面的绿色按钮Reload ……;

        若是你想一直让这个网站运行下去,则是要每隔三个月点击黄色按钮Run……;

用python做网站 python做网站教程_pandas_08

3) 网站管理

以我的注册网站为例,进入welcome

这是网站的后台入口界面,点击蓝色按钮admin;

用python做网站 python做网站教程_机器学习_09

 输入管理密码;

用python做网站 python做网站教程_机器学习_10

 到达后台;

         

用python做网站 python做网站教程_1024程序员节_11

 这些东西到这都可以自己探索了,可以自己随便试试。

2.我的开端

1)删除example app

2)创建新的app sophia

用python做网站 python做网站教程_1024程序员节_12

3)修改参数

用python做网站 python做网站教程_1024程序员节_13

  对menu.py

主要是看上面的菜单栏有些不爽,将他们都隐去。

记得保存。

# -*- coding: utf-8 -*-
# this file is released under public domain and you can use without limitations

# ----------------------------------------------------------------------------------------------------------------------
# this is the main application menu add/remove items as required
# ----------------------------------------------------------------------------------------------------------------------

response.menu = [
    (T('sophia'), False, URL('default', 'index'), [])
]

# ----------------------------------------------------------------------------------------------------------------------
# provide shortcuts for development. you can remove everything below in production
# ----------------------------------------------------------------------------------------------------------------------
'''
if not configuration.get('app.production'):
    _app = request.application
    response.menu += [
        (T('My Sites'), False, URL('admin', 'default', 'site')),
        (T('This App'), False, '#', [
            (T('Design'), False, URL('admin', 'default', 'design/%s' % _app)),
            (T('Controller'), False,
             URL(
                 'admin', 'default', 'edit/%s/controllers/%s.py' % (_app, request.controller))),
            (T('View'), False,
             URL(
                 'admin', 'default', 'edit/%s/views/%s' % (_app, response.view))),
            (T('DB Model'), False,
             URL(
                 'admin', 'default', 'edit/%s/models/db.py' % _app)),
            (T('Menu Model'), False,
             URL(
                 'admin', 'default', 'edit/%s/models/menu.py' % _app)),
            (T('Config.ini'), False,
             URL(
                 'admin', 'default', 'edit/%s/private/appconfig.ini' % _app)),
            (T('Layout'), False,
             URL(
                 'admin', 'default', 'edit/%s/views/layout.html' % _app)),
            (T('Stylesheet'), False,
             URL(
                 'admin', 'default', 'edit/%s/static/css/web2py-bootstrap3.css' % _app)),
            (T('Database'), False, URL(_app, 'appadmin', 'index')),
            (T('Errors'), False, URL(
                'admin', 'default', 'errors/' + _app)),
            (T('About'), False, URL(
                'admin', 'default', 'about/' + _app)),
        ]),
        ('web2py.com', False, '#', [
            (T('Download'), False,
             'http://www.web2py.com/examples/default/download'),
            (T('Support'), False,
             'http://www.web2py.com/examples/default/support'),
            (T('Demo'), False, 'http://web2py.com/demo_admin'),
            (T('Quick Examples'), False,
             'http://web2py.com/examples/default/examples'),
            (T('FAQ'), False, 'http://web2py.com/AlterEgo'),
            (T('Videos'), False,
             'http://www.web2py.com/examples/default/videos/'),
            (T('Free Applications'),
             False, 'http://web2py.com/appliances'),
            (T('Plugins'), False, 'http://web2py.com/plugins'),
            (T('Recipes'), False, 'http://web2pyslices.com/'),
        ]),
        (T('Documentation'), False, '#', [
            (T('Online book'), False, 'http://www.web2py.com/book'),
            (T('Preface'), False,
             'http://www.web2py.com/book/default/chapter/00'),
            (T('Introduction'), False,
             'http://www.web2py.com/book/default/chapter/01'),
            (T('Python'), False,
             'http://www.web2py.com/book/default/chapter/02'),
            (T('Overview'), False,
             'http://www.web2py.com/book/default/chapter/03'),
            (T('The Core'), False,
             'http://www.web2py.com/book/default/chapter/04'),
            (T('The Views'), False,
             'http://www.web2py.com/book/default/chapter/05'),
            (T('Database'), False,
             'http://www.web2py.com/book/default/chapter/06'),
            (T('Forms and Validators'), False,
             'http://www.web2py.com/book/default/chapter/07'),
            (T('Email and SMS'), False,
             'http://www.web2py.com/book/default/chapter/08'),
            (T('Access Control'), False,
             'http://www.web2py.com/book/default/chapter/09'),
            (T('Services'), False,
             'http://www.web2py.com/book/default/chapter/10'),
            (T('Ajax Recipes'), False,
             'http://www.web2py.com/book/default/chapter/11'),
            (T('Components and Plugins'), False,
             'http://www.web2py.com/book/default/chapter/12'),
            (T('Deployment Recipes'), False,
             'http://www.web2py.com/book/default/chapter/13'),
            (T('Other Recipes'), False,
             'http://www.web2py.com/book/default/chapter/14'),
            (T('Helping web2py'), False,
             'http://www.web2py.com/book/default/chapter/15'),
            (T("Buy web2py's book"), False,
             'http://stores.lulu.com/web2py'),
        ]),
        (T('Community'), False, None, [
            (T('Groups'), False,
             'http://www.web2py.com/examples/default/usergroups'),
            (T('Twitter'), False, 'http://twitter.com/web2py'),
            (T('Live Chat'), False,
             'http://webchat.freenode.net/?channels=web2py'),
        ]),
    ]
'''

 修改default.py

        由于需要自定义网站,所以需要将默认网站接口进行修改。将代码修改以下:

# -*- coding: utf-8 -*-
# -------------------------------------------------------------------------
# This is a sample controller
# this file is released under public domain and you can use without limitations
# -------------------------------------------------------------------------

# ---- example index page ----
def index():
    return auth.wiki() 

# ---- API (example) -----
@auth.requires_login()
def api_get_user_email():
    if not request.env.request_method == 'GET': raise HTTP(403)
    return response.json({'status':'success', 'email':auth.user.email})

# ---- Smart Grid (example) -----
@auth.requires_membership('admin') # can only be accessed by members of admin groupd
def grid():
    response.view = 'generic.html' # use a generic view
    tablename = request.args(0)
    if not tablename in db.tables: raise HTTP(403)
    grid = SQLFORM.smartgrid(db[tablename], args=[tablename], deletable=False, editable=False)
    return dict(grid=grid)

# ---- Embedded wiki (example) ----
def wiki():
    auth.wikimenu() # add the wiki to the menu
    return auth.wiki() 

# ---- Action for login/register/etc (required for auth) -----
def user():
    """
    exposes:
    http://..../[app]/default/user/login
    http://..../[app]/default/user/logout
    http://..../[app]/default/user/register
    http://..../[app]/default/user/profile
    http://..../[app]/default/user/retrieve_password
    http://..../[app]/default/user/change_password
    http://..../[app]/default/user/bulk_register
    use @auth.requires_login()
        @auth.requires_membership('group name')
        @auth.requires_permission('read','table name',record_id)
    to decorate functions that need access control
    also notice there is http://..../[app]/appadmin/manage/auth to allow administrator to manage users
    """
    return dict(form=auth())

# ---- action to server uploaded static content (required) ---
@cache.action()
def download():
    """
    allows downloading of uploaded files
    http://..../[app]/default/download/[filename]
    """
    return response.download(request, db)

 视图修改layout.html

用python做网站 python做网站教程_pandas_14

修改掉web2py这个logo;

        找到这一行:

用python做网站 python做网站教程_用python做网站_15

        改成:

用python做网站 python做网站教程_python_16

 修改index.py;

用python做网站 python做网站教程_用python做网站_17

         将这些代码全换成我下面的这个:

{{extend 'layout.html'}}

{{=content}}

到这基本参数修改完毕。来看看最终呈现的网站是什么样子的。

用python做网站 python做网站教程_pandas_18

         嗯,网站干净整洁,达到预期。

 4)修饰

注册;

在这个网站进行二次注册,注意密码不能太短也不能太长,要不然注册不了。(名字啊,随便取)

用python做网站 python做网站教程_python_19

多一个 Edit Page等菜单栏,这下可以对这个网站肆意妄为了。

 

用python做网站 python做网站教程_pandas_20

 Edit Page页(可以看看我的编辑)

用python做网站 python做网站教程_1024程序员节_21

Edit Page Media

用python做网站 python做网站教程_用python做网站_22

提交 

用python做网站 python做网站教程_python_23

 最终结果呈现

用python做网站 python做网站教程_用python做网站_24


总结

        没什么好总结的,一开始弄这个也是为了一有点喜欢的人,单箭头的喜欢,嗯,先优秀自己。