본문 바로가기

전체 글

(210)
게시판-추천 추천을 했을 때 추천을 했다는 정보를 담기 위해 recommend라는 테이블을 만들었다. module.exports = (sequelize, DataTypes) => { return sequelize.define('recommend', { username: { type: DataTypes.STRING, allowNull: false }, postId: { type: DataTypes.INTEGER, allowNull: false } }); }; 테이블의 구조는 간단하게 username과 postid(게시글 식별)로 구성되어 있다. db.users.hasMany(db.recommend); db.recommend.belongsTo(db.users); db.posts.hasMany(db.recommend); ..
게시판-댓글 먼저 데이터베이스에 comments 테이블을 추가했다. module.exports = function(sequelize, DataTypes){ return sequelize.define('comments', { idx: { type : DataTypes.INTEGER, autoIncrement: true, primaryKey: true, allowNull: false }, content: { type: DataTypes.TEXT, allowNull: false }, writer: { type: DataTypes.STRING(255), allowNull: false }, postId: { type: DataTypes.INTEGER, allowNull: false } }); } postId는 어떤 글에 대한..
게시판-자기 글 수정, 삭제, 비밀글 자기 글인 경우에 수정, 삭제 버튼이 활성화되게 하였다. posts 테이블에 writer라는 속성을 넣어서 글을 쓸 때 username을 넣도록 하였다. 그리고 read에서 iswriter라는 변수를 ejs 파일로 전달하였다. const iswriter = req.session.user && req.session.user.username === post.writer; res.render('board/read', { post: post, iswriter: iswriter }); 이렇게 전달한 iswriter를 read.ejs 파일에서 받아서 조건문을 설정하였다. 글 수정 글 삭제 이렇게 iswriter가 참일 때 수정과 삭제 버튼을 만들었다. edit은 edit 페이지로 이동하도록 하였고, delete는 ..
게시판-이메일 인증, 아이디 찾기 이메일 인증을 하려면 회원가입 도중에 인증코드를 받아서 코드가 맞는지 확인해야 한다. 그런데 인증이 되기 전에 회원 정보와 코드를 같이 users 테이블에 만들어버리면 인증을 실패하거나 했을 때 남은 데이터를 처리하기가 곤란해질거 같아서 verificationCodes라는 새로운 테이블을 만들었다. module.exports = function(sequelize, DataTypes) { return sequelize.define('verificationCodes', { idx: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true, allowNull: false }, email: { type: DataTypes.STRING(255), allo..
게시판-회원가입, 로그인 폴더 구성부터 설명하자면, model 폴더 안에는 users.js라는 파일을 만들고, router 폴더 안에는 auth.js 파일을 만든다. views 폴더에는 auth 폴더를 만들고 그 안에 login.ejs, signup.ejs 파일을 만든다. 회원가입, 로그인 기능을 추가하기 위해서 users라는 테이블을 추가하여 사용자들의 정보를 담는다. model 폴더 안의 users.js 파일이다. module.exports = function(sequelize, DataTypes){ return sequelize.define('users', { idx: { type : DataTypes.INTEGER, autoIncrement: true, primaryKey: true, allowNull: false }, ..
게시판-CRUD Node.js 공부를 하며 만들었던 프로젝트를 복사해 새 프로젝트를 만들고 이어서 작업하도록 하겠다. 폴더 구성부터 진행하였다. 우선, views 폴더 안에 board 폴더를 만들고 그 안에 main.ejs, read.ejs, write.ejs, edit.ejs 이렇게 4개의 파일을 만든다. 삭제 관련 파일이 없는 이유는 삭제는 따로 페이지를 이동해서 할 필요가 없기 때문이다. edit의 경우에는 자신의 글만 수정 가능하게 해야 되서 회원가입, 로그인 기능을 만들고 나서 만들겠다. main은 게시판 목록이 보이는 메인 화면이다. 그리고 router 폴더 안에 borad.js 를 만들어서 게시판 관련 링크를 따로 모아두었다. model 폴더 안에는 새로운 테이블을 만들기 위해 posts.js 파일을 만들었..
flask - mySQL 연동 pip install pymysql​ flask에서 mySQL을 연동해서 사용하려면 pymysql이라는 모듈을 사용해야 한다. import pymysql db = pymysql.connect(host='127.0.0.1', user='root', password='vkfksshdmf0207', db='flasksql', charset='utf8') cursor = db.cursor() sql = "select * from users" cursor.execute(sql) cursor.fetchall() #모든 행 cursor.fetchone() # 하나의 행 cursor.fetchmany(n) # n개의 데이터 db.commit() db.close() 우선 pymysql의 connect 함수를 이용해 자신..
flask flask는 파이썬 기반 웹 프레임워크이다. 먼저 설치를 위해 cmd창에서 pip install flask 이 명령어를 쳐주면 준비는 끝이다. from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__main__': app.run() 기본적인 flask의 어플리케이션 구조이다. run()을 이용해 서버를 실행시키면, 코드가 변경 되었을 때 수동으로 재시작을 해줘야 반영이 된다. 디버그 모드를 사용하면, 코드가 바뀌었을 때 서버가 알아서 재시작된다. app.debug = True app.run() app.run(debug=True) 두 방법 중 하나..