试用deepseek写个简单web服务项目,确实够聪明。如果再有了智慧和情感,是不是要替代碳基生物了?
提问:
请用python flask sqlite写一个http server项目,要求生成以下2个python文件和1个数据库文件,以及2个html模板:其中,1、项目入口文件app.py,作用是启动http服务,提供用户登录界面index.html;同时,如果不存在db.sqlite数据库,则调用db.py初始化生成db.sqlite数据库;2、db.py,作用是初始化生成db.sqlite数据库,数据库中有user数据表,数据表有username和password两个字段,两个字段对应的一条记录为admin 和123,以及对数据库进行CRUD操作功能;3、用户登录后跳转到userlist.html,可在网页上对user数据表进行CRUD操作。
回答:
以下是按照您的要求创建的项目文件结构及代码:
-
app.py
from flask import Flask, render_template, request, redirect, url_for, session
import sqlite3
import os
import db
app = Flask(__name__)
app.secret_key = 'your_secret_key_here'
# 初始化数据库
if not os.path.exists('db.sqlite'):
db.init_db()
@app.route('/', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
if db.check_user(username, password):
session['username'] = username
return redirect(url_for('userlist'))
return render_template('index.html', error='Invalid credentials')
return render_template('index.html')
@app.route('/userlist')
def userlist():
if 'username' not in session:
return redirect(url_for('login'))
users = db.get_users()
return render_template('userlist.html', users=users)
@app.route('/add', methods=['POST'])
def add_user():
if 'username' not in session:
return redirect(url_for('login'))
username = request.form['new_username']
password = request.form['new_password']
db.add_user(username, password)
return redirect(url_for('userlist'))
@app.route('/edit', methods=['POST'])
def edit_user():
if 'username' not in session:
return redirect(url_for('login'))
old_username = request.form['old_username']
new_username = request.form['new_username']
new_password = request.form['new_password']
db.update_user(old_username, new_username, new_password)
return redirect(url_for('userlist'))
@app.route('/delete/<username>')
def delete_user(username):
if 'username' not in session:
return redirect(url_for('login'))
db.delete_user(username)
return redirect(url_for('userlist'))
@app.route(