Python的小网页

时间:2016-10-11 14:10:27

标签: python-2.7 bottle

我创建了一个带有Bottle:Python Web框架的小维基页面。现在一切都很好。您可以通过转到"创建新文章来创建文章"给它一个标题并写下一些文字。然后,所有创建的文章都显示在列表中的索引页面上,您可以单击它们进行打开和阅读。

但问题是,当我点击文章时,目的是通过为文章添加新标题并在文本中添加一些新单词来编辑文章。它没有改变原始文本文件上的名称,而是获得一个带有新标题的新文本文件,原始文本文件仍然存在。

这是代码:

from bottle import route, run, template, request, static_file
from os import listdir
import sys
host='localhost'

@route('/static/<filname>')

def serce_static(filname):
    return static_file(filname, root="static")

@route("/")
def list_articles():
    '''
    This is the home page, which shows a list of links to all articles
    in the wiki.
    '''
    files = listdir("wiki")
    articles = []

    for i in files:
        lista = i.split('.')
        word = lista[0]
        lista1 = word.split('/')
        articles.append(lista1[0])

    return template("index", articles=articles)


@route('/wiki/<article>',)
def show_article(article):
    '''
    Displays the user´s text for the user
    '''
    wikifile = open('wiki/' + article + '.txt', 'r')
    text = wikifile.read()
    wikifile.close()

    return template('page', title = article, text = text)


@route('/edit/')
def edit_form(): 
    '''
    Shows a form which allows the user to input a title and content
    for an article. This form should be sent via POST to /update/.
    '''
    return template('edit')

@route('/update/', method='POST')
def update_article():
    '''
    Receives page title and contents from a form, and creates/updates a
    text file for that page.
    '''
    title = request.forms.title
    text = request.forms.text
    tx = open('wiki/' + title + '.txt', 'w')
    tx.write(text)
    tx.close()
    return template('thanks', title=title, text=text)



run(host='localhost', port=8080, debug=True, reloader=True)

1 个答案:

答案 0 :(得分:0)

文章对象太简单,无法列出,编辑或更新。

  1. 文章的文件名应为 ID
  2. 文章文件应包含两个字段:标题和文字。

    例如:10022.txt

    title:
    bottle
    text:
    Bottle is a fast, simple and lightweight WSGI micro web-framework for Python.
    
  3. 您应该按ID检索文章。

  4. 您可以按ID打开文件并更改其标题和文字。