python - Form input-box not displaying -


i'm trying display simple form input-text box django. i'm deploying on amazon aws. site works fine on different server (pythonanywhere) there major problem on aws. specifically, input box not being displayed. i'm using templates follows:

home.html

{% extends 'lists/base.html' %}  {% block header_text %}start new to-do list {% endblock %}  {% block form_action %}{% url 'new_list' %}{% endblock %} 

base.html

<!doctype html> <html lang="en">      <head>         <meta charset="utf-8">         <meta http-equiv="x ua-compatible" content="ie-edge">         <meta name="viewport" content="width=device-width, initial-scale=1">         <title>to-do lists</title>         <link href="/static/bootstrap/css/bootstrap.min.css" rel="stylesheet">         <link href="/static/base.css" rel="stylesheet">     </head>     <body>         <div class="container">              <div class="row">                 <div class="col-md-6 col-md-offset-3 jumbotron">                     <div class="text-center">                         <h1>{% block header_text %}{% endblock %}</h1>                         <form method="post" action="{% block form_action %}{% endblock %}">                             {{ form.text }}                             {% csrf_token %}                             {% if form.errors %}                                 <div class = "form-group has-error">                                     <span class = "help-block">{{ form.text.errors }}</span>                                 </div>                             {% endif %}                         </form>                     </div>                 </div>             </div>              <div class="row">                 <div class="col-md-6 col-md-offset-3">                     {% block table %}                     {% endblock %}                 </div>             </div>         </div>     </body> </html> 

models.py

from django.db import models django  .core.urlresolvers import reverse   class list(models.model):     def get_absolute_url(self):         return reverse('view_list', args=[self.id])  # create models here. class item(models.model):     text = models.textfield(default = '')     list = models.foreignkey(list, default = none)     #list = models.foreignkey(list , default=none) 

forms.py

from django import forms  lists.models import item  empty_item_error = "you can't have empty list item" class itemform(forms.models.modelform):     class meta:         model = item         fields = ('text',)         widgets ={             'text' : forms.fields.textinput(attrs={                     'placeholder': 'enter to-do item',                     'class': 'form-control input-lg',             }),         }         error_messages = {             'text' : { 'required': empty_item_error }         } 

views.py

from django.shortcuts import redirect, render lists.models import item, list django.core.exceptions import validationerror lists.forms import itemform lists.models import item, list  # create views here. def home_page(request):     return render(request, 'lists/home.html', {'form': itemform()}) 

urls.py

from django.conf.urls import url lists import views  urlpatterns = [                 url(r'^new$', views.new_list, name='new_list'),                 url(r'^(\d+)/$', views.view_list, name='view_list'),          ] 

currently site displays following:

enter image description here

however should (and on different website) display this: enter image description here

i've pushed/pulled entire project github , code between each site identical, yet i'm not seeing why text input isn't displayed, unless form needs initialized in django somehow or quirk aws?

when comparing 2 sites, 1 without text-box not generate following:

<input class="form-control input-lg" id="id_text" name="text" placeholder="enter to-do item" type="text" /> 

even though should, per base.html syntax.

updated

the full views.py (per suggested comment) is:

from django.shortcuts import redirect, render lists.models import item, list django.core.exceptions import validationerror lists.forms import itemform lists.models import item, list  # create views here. def home_page(request):     return render(request, 'lists/home.html', {'form': itemform()})  def new_list(request):     form = itemform(data=request.post)     if form.is_valid():         list_ = list.objects.create()         item.objects.create(text=request.post['text'], list=list_)         return redirect(list_)     else:         return render(request, 'lists/home.html', {"form": form})  def view_list(request, list_id):     list_ = list.objects.get(id=list_id)     form = itemform()      if request.method == 'post':         form = itemform(data=request.post)         if form.is_valid():             item.objects.create(text=request.post['text'], list=list_)             return redirect(list_)     return render(request, 'lists/list.html', {'list': list_, "form": form}) 

in experience django, there 2 things (always?) need static files "refresh" after pushing them remote server:

  1. run ./manage.py collectstatic make sure static files in right place.
  2. while sshed server run command sudo reboot now restart server (note kick out of ssh session, , server unreachable moment - few seconds in case).

as step 2 there might better way this, in experience, when update static files updated version not served until this, , restarting nginx or not sufficient changes take effect. note mean site, if live, not reachable few seconds while server restarting (which makes me think there might better way it) me , small user base not big issue.

from reading other posts static files not updating, seems case browser caching static files, , restarting browser/clearing cache might trick well, have not had chance try yet.


Comments

Popular posts from this blog

mysql - Dreamhost PyCharm Django Python 3 Launching a Site -

java - Sending SMS with SMSLib and Web Services -

python 3.5 - Pyqtgraph string in x tick -