• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

프로필폼 관련 질문입니다 ..!

21.01.10 17:22 작성 조회수 172

1

프로필페이지를 만들어서 이름을 누르면 그 이름의 프로필

링크로 갈수있게 만들고 싶은데 

프로필 작성을 게시글 작성과 비슷하게 만들고 idx 를 ida 로 변경했느데 프로필 작성 게시글을 쓰면 바로 프로필 상세보기로 가는데 따로 이름을 눌러서 가지지는 않는데 어떤걸 수정해야 할까요 ..?

프로필 상세보기

@app.route("/portfolio")
@login_re
def portfolio_view():
    ida = request.args.get("ida")
    if ida is not None:
        portfolio = mongo.db.portfolio
        data = portfolio.find_one({"_id"ObjectId(ida)})
        if data is not None:
            results = {
                "name"session.get("name"),
                "id"data.get("_id"),
                "work"data.get("work"),
                "job"data.get("job"),
                "phone"data.get("phone"),
                "youtube"data.get("youtube"),
                "facebook"data.get("facebook"),
                "Twitter"data.get("Twitter"),
                "instagram"data.get("instagram"),
                "github"data.get("github"),
                "notion"data.get("notion"),
                "writer_id"data.get("writer_id""")
            }
            return render_template("portfolio.html"results=results)
    return abort(404)
프로필 작성
@app.route("/portfolioedit"methods=["GET""POST"])
def portfolio_edit():
    if request.method == "POST":
        name = session.get("name")
        write_id = session.get("id")
        work = request.form.get("work")
        job = request.form.get("job")
        phone = request.form.get("phone")
        youtube = request.form.get("youtube")
        facebook = request.form.get("facebook")
        Twitter = request.form.get("Twitter")
        instagram = request.form.get("instagram")
        github = request.form.get("github")
        notion = request.form.get("notion")
        cr_utc_time = round(datetime.utcnow().timestamp() * 1000)
        portfolio = mongo.db.portfolio

        portfolios = {
            "name"name,
            "work"work,
            "job"job,
            "phone"phone,
            "youtube"youtube,
            "facebook"facebook,
            "Twitter"Twitter,
            "instagram"instagram,
            "github"github,
            "notion"notion,
            "write_id"write_id,
            "time"cr_utc_time,
        }
        a = portfolio.insert_one(portfolios)
        return redirect(url_for("portfolio_view"ida=a.inserted_id))
    else:
        return render_template("portfolio_edit.html")

답변 1

답변을 작성해보세요.

0

답변이 늦었습니다.

프로필 작성, 수정하는 영역은 작성자의 권한이고 말씀하신 프로필 링크를 통해 프로필을 보는 영역은 작성자와 상관없는 일반 유저의 영역으로 보입니다만..

올려주신 코드에서 프로필 데이터를 가져올때  ida 라고 해놓은 id 값과 프로필 유저를 매칭할 수 있는 조건이 없습니다. 프로필데이터의 소유자가 누군지를 ida 로만 알수가 없어보입니다. 따라서 아래 코드를 참고해서 실제 코드에 어떻게 적용할지 고민해보셔야 할듯 합니다.

def portfolio_view():
    user_id = request.args.get("user_id")
    if ida is not None:
        portfolio = mongo.db.portfolio
        data = portfolio.find_one({"writer_id": user_id})
        if data is not None:
            results = {
                "name": session.get("name"),
                "id": data.get("_id"),
                "work": data.get("work"),
                "job": data.get("job"),
                "phone": data.get("phone"),
                "youtube": data.get("youtube"),
                "facebook": data.get("facebook"),
                "Twitter": data.get("Twitter"),
                "instagram": data.get("instagram"),
                "github": data.get("github"),
                "notion": data.get("notion"),
                "writer_id": data.get("writer_id", "")
            }
            return render_template("portfolio.html", results=results)
    return abort(404)