Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Python

Background colors are not saving after pressing update

can you tell me where in my code I am going wrong? I have watched this video more times than I would like to admit. Maybe it has to do with the cookies? I feel like I am being left in the dust here.

builder.html

{% extends "layout.html" %}

{% block content %}
<!--Build Area -->
<form action="{{ url_for('save') }}" method="POST" class="wrap no-top">
    <div class="grid-100 row">
        <div class="grid-30">
            <div class="title">
                <input type="text" name="name" value="{{ saves.get('name', '') }}">
            </div>
        </div>
        <div class="grid-70">
            <div class="colors">
              {% for color in options['colors'] %}
                <input type='radio' id="{{ color }}" name="colors" value'{{color}}'
                  {% if saves.get('colors') == color %} checked {% endif%}>
                <label for="{{ color }}"></label>
              {% endfor %}
                  <button class="btn">Update</button>

            </div> 
        </div>
        <div id="bear" class="grid-100 bg-{{ saves.get('colors') }}">
            <div class="bear-body"><img src="/static/img/bear_body.svg" /></div>
            <div class="head"><img src="/static/img/bear_face.svg" /></div>
            <div class="nose"><img src="/static/img/bear_nose.svg" /></div>
        </div>
        <div class="items">
        </div>
    </div>
</form>

{% endblock %}

app.py

import json
from flask import Flask
from flask import render_template
from flask import redirect 
from flask import url_for
from flask import request 
from flask import make_response
from options import DEFAULTS


app = Flask(__name__)



def get_saved_data():
  try:
    data = json.loads(request.cookies.get('character'))
  except TypeError:
    data = {} 
  return data

@app.route('/')
def index(): 
  return render_template('index.html', saves=get_saved_data())

@app.route('/builder')
def builder(): 
  return render_template(
    'builder.html', 
    saves=get_saved_data(),
    options=DEFAULTS
  )

@app.route('/save',methods=['POST'])
def save(): 
  response = make_response(redirect(url_for('builder')))
  data = get_saved_data()
  data.update(dict(request.form.items()))
  response.set_cookie('character', json.dumps(data))                       
  return response



app.run(debug=True, host='0.0.0.0', port=8000)

Kortney Field could you include a link to the video?

I am attaching the my index.html as well

{% extends "layout.html" %}
{% block content %}
<!--Enter Name -->
<div class="enter-name">
    <div class="grid-100">
        <img src="/static/img/bear_avatar.svg" class="bear-avatar" />
    </div>
    <div class="grid-100">
        <form action="{{url_for('save')}}" method="POST">
            <label>Name your bear</label>
            <input type="text" name="name" value="{{ saves.get('name', '') }}" autofocus>
            <input type="submit" value="Let's build it!">
        </form>
    </div>
</div>
{% endblock %}

2 Answers

Hi Kortney Field! I think I found the issue. You're missing an equals sign in your builder.html file:

 <div class="colors">
              {% for color in options['colors'] %}
                <input type='radio' id="{{ color }}" name="colors" value'{{color}}'
                                                                        ^

Hope this helps. :) Let me know if that does/doesn't fix the problem. OK? Thx!

I cannot believe how many times I went through the video and dissecting the code character by character, I still missed that. Thank you so much for getting back to me.

Np! :)

Happy Coding, Kortney!