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 trialNthulane Makgato
Courses Plus Student 19,602 PointsTacocat Code Challenge won't pass. "Bummer! Try Again!"
Hello!!
I have passed all 11 tests in the workspaces version of tacocat.py but the challenge won't pass. I have commented out the app.run() section of my code.
Chris Freeman, Kenneth Love or anyone else. Your assistance would be appreciated.
tacocat.py
from flask import Flask, g, render_template, flash, redirect, url_for
from flask.ext.bcrypt import check_password_hash
from flask.ext.login import (LoginManager, login_user,
logout_user, login_required, current_user)
import forms
import models
DEBUG = True
PORT = 8000
HOST = '0.0.0.0'
app = Flask(__name__)
app.secret_key = 'youdontknowmysecretkey'
login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = 'login'
@login_manager.user_loader
def load_user(userid):
try:
return models.User.get(models.User.id == userid)
except models.DoesNotExist:
return None
@app.before_request
def before_request():
"""Connect to the database before each request."""
g.db = models.DATABASE
g.db.connect()
g.user = current_user
@app.after_request
def after_request(response):
"""Close the database connection after each request."""
g.db.close
return response
@app.route('/register', methods=('GET', 'POST'))
def register():
form = forms.RegisterForm()
if form.validate_on_submit():
flash("Yay, you registered!", "success")
models.User.create_user(
email = form.email.data,
password = form.password.data
)
return redirect(url_for('index'))
return render_template('register.html', form=form)
@app.route('/login', methods=('GET', 'POST'))
def login():
form = forms.LoginForm()
if form.validate_on_submit():
try:
user = models.User.get(models.User.email == form.email.data)
except models.DoesNotExist:
flash("Email is incompatible", "error")
else:
if check_password_hash(user.password, form.password.data):
login_user(user)
flash("You are logged in", "success")
return redirect(url_for('index'))
else:
flash("Password does not match", "error")
return render_template('login.html', form=form)
@app.route('/logout')
@login_required
def logout():
logout_user()
flash("You've been logged out! Come back soon!", "success")
return redirect(url_for('index'))
@app.route('/taco', methods=('GET','POST'))
@login_required
def taco():
form = forms.TacoForm()
if form.validate_on_submit():
models.Taco.create(user = g.user._get_current_object(),
protein = form.protein.data,
shell = form.shell.data,
cheese = form.cheese.data,
extras = form.extras.data.strip()
)
flash("Your taco has been added!!", "success")
return redirect(url_for('index'))
return render_template('taco.html', form=form)
@app.route('/')
def index():
tacos = models.Taco.select().limit(10)
return render_template('index.html', tacos=tacos)
if __name__== '__main__':
models.initialize()
try:
with models.DATABASE.transaction():
models.User.create_user(
email = 'billy@example.com',
password = 'password'
)
except ValueError:
pass
#app.run(debug=DEBUG, host=HOST, port=PORT)
1 Answer
Kenneth Love
Treehouse Guest TeacherWithout seeing your other files, I can't find anything that would be failing in the code challenge. When I put your code into my tester, with known-good versions of the other files, it passes. What are your other files like? Are you submitting them all into the code challenge?
Nthulane Makgato
Courses Plus Student 19,602 PointsNthulane Makgato
Courses Plus Student 19,602 PointsI'm so embarrassed. I thought that all they wanted want tacocat.py.
I just pasted them and it works. Thanks!