Scroll indicator done
728x90

projects/myproject/pybo/templates/question/question_detail.html

<h1>{{ question.subject }}</h1>
<div>
    {{ question.content }}
</div>
<form action="{{ url_for('answer.create', question_id=question.id) }}" method="post">
    <textarea name="content" id="content" rows="15"></textarea>
    <input type="submit" value="답변등록">
</form>

# 답변 블루프린트 만들기

projects/myproject/pybo/views/answer_views.py

from datetime import datetime

from flask import Blueprint, url_for, request
from werkzeug.utils import redirect

from pybo import db
from pybo.models import Question, Answer

bp = Blueprint('answer', __name__, url_prefix='/answer')


@bp.route('/create/<int:question_id>', methods=('POST',))
def create(question_id):
    question = Question.query.get_or_404(question_id)
    content = request.form['content']
    answer = Answer(content=content, create_date=datetime.now())
    question.answer_set.append(answer)
    db.session.commit()
    return redirect(url_for('question.detail', question_id=question_id))

# 답변 블루프린트 등록하기

from flask import Flask
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
import config

db = SQLAlchemy()
migrate = Migrate()

def create_app():
    app = Flask(__name__)
    app.config.from_object(config)

    # ORM
    db.init_app(app)
    migrate.init_app(app, db)
    from . import models

    # 블루프린트
    from .views import main_views, question_views, answer_views
    app.register_blueprint(main_views.bp)
    app.register_blueprint(question_views.bp)
    app.register_blueprint(answer_views.bp)

    return app

http://localhost:5000/question/detail/2/

# 답변 표시하기 (++스타일시트 작성하기)

(myproject) c:\projects\myproject> cd pybo
(myproject) c:\projects\myproject\pybo> mkdir static

projects/myproject/pybo/static/style.css

textarea {
    width:100%;
}
input[type=submit] {
    margin-top:10px;
}

projects\myproject\pybo\templates\question\question_detail.html

<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
<h1>{{ question.subject }}</h1>
<div>
    {{ question.content }}
</div>

<h5>{{ question.answer_set|length }}개의 답변이 있습니다.</h5>
<div>
    <ul>
    {% for answer in question.answer_set %}
        <li>{{ answer.content }}</li>
    {% endfor %}
    </ul>
</div>

<form action="{{ url_for('answer.create', question_id=question.id) }}" method="post">
    <textarea name="content" id="content" rows="15"></textarea>
    <input type="submit" value="답변등록">
</form>

http://localhost:5000/question/detail/2/

 

728x90