MongoDB
2023. 12. 11. 09:39ㆍFlask
mongoDB는 nosql 계열 Data base이고
python에서는 pymongo라는 라이브러리를 이용하면 사용 할 수 있다
from flask_wtf import FlaskForm
from wtforms import StringField, validators, PasswordField, BooleanField, TextAreaField
from wtforms.validators import DataRequired
class board_form(FlaskForm):
name = StringField("writer")
title = StringField("title",validators=[DataRequired()])
content = TextAreaField("content", validators=[DataRequired()])
from flask import Blueprint, url_for, render_template, flash, request, session, g
from bson.objectid import ObjectId
from werkzeug.utils import redirect
from pymongo.mongo_client import MongoClient
from pymongo.server_api import ServerApi
import pymongo
from .form import board_form
uri = "mongodb://localhost:27017"
client = MongoClient(host = 'localhost', port = 27017, connect = True)
db = client.account#db 이름
post_board = db.board#db의 collection 이름 테이블 같은 거
id = db.id
board = Blueprint('board', __name__, url_prefix='/board')
@board.route('/list',methods = ['GET',])
def db_see():
results = post_board.find()
return render_template('board_test/board.html', data = results)
@board.route('/post/new',methods = ['GET','POST',])
def post_insert():
user_id = session.get('name')
if user_id is None:
return redirect(url_for('board.db_see'))
else:
form = board_form()
if request.method == 'POST' and form.validate_on_submit():
data = id.find_one({"_id":ObjectId(user_id)})
title = form.title.data
content = form.content.data
document = {"name":data['name'], "title":title, "content":content}
post_board.insert_one(document)
return redirect(url_for('board.db_see'))
else:
return render_template('board_test/post.html',form = form)
@board.route('/post/detail/<id>',methods = ['POST','GET',])
def post_detail(id):
data = post_board.find_one({"_id":ObjectId(id)})
return render_template("board_test/detail.html", data = data)
@board.route('/post/delete/<data_id>',methods = ['POST','GET',])
def post_delete(data_id):
user_id = session.get('name')
user = id.find_one({"_id":ObjectId(user_id)})
data = post_board.find_one({'_id':ObjectId(data_id)})
if(data["name"] == user["name"]):
post_board.delete_one({'_id':ObjectId(data_id)})
return redirect(url_for('board.db_see'))
'Flask' 카테고리의 다른 글
| WebSocket (0) | 2023.12.11 |
|---|---|
| Session login (0) | 2023.12.11 |
| Route (0) | 2023.12.11 |
| render_template (0) | 2023.12.10 |
| Blueprint (1) | 2023.12.10 |