2017-07-23 3 views
1

J'ai créé une vue dont la sortie un formulaire contenant:déforment la séquence de mise à jour de mappage ne

class Person(colander.Schema): 
    name = colander.SchemaNode(colander.String()) 
    age = colander.SchemaNode(colander.Integer(), 
           validator=colander.Range(0, 200)) 

class People(colander.SequenceSchema): 
    person = Person() 

class Schema(colander.Schema): 
    people = People() 

class SchemaSpace(colander.MappingSchema): 
    schema = Schema() 
    corners = colander.SchemaNode(colander.String()) 

La sortie est correcte mais quand je clique sur le bouton Add Person, rien ne se passe. La page clignote et défile et rien, je remplis tout. Savez-vous ce qui se passe ici? J'utilise plusieurs formes, ça vient d'ici?

Mon HTML est petit et je me sers jinja2:

{% extends "layout.jinja2" %} 
{% block head %} 

<script src="{{request.static_url('deform:static/scripts/jquery-2.0.3.min.js')}}" 
       type="text/javascript"></script> 
<script src="{{request.static_url('deform:static/scripts/bootstrap.min.js')}}" 
     type="text/javascript"></script> 

<script src="{{request.static_url('deform:static/scripts/jquery.form-3.09.js')}}" 
      type="text/javascript"></script> 
<script src="{{request.static_url('deform:static/scripts/jquery-sortable.js')}}" 
      type="text/javascript"></script> 
<script src="{{request.static_url('deform:static/scripts/jquery.maskedinput-1.3.1.min.js')}}" 
      type="text/javascript"></script> 

{% endblock head %} 

{% block content %} 
<div class="row"> 
    <div class="col-md-8"> 
    <div class="content"> 
    <h1>{{view.view_name}} - {{page_title}}</h1> 
    <p>Welcome</p> 

    {{form | safe}} 

    </div> 
    </div> 
    <div class="col-md-4"> 
    <h2>Extra</h2> 
    <p>some text</p> 

    </div> 
</div> 
{% endblock content %} 

D'après ce que je trouve de la doc, j'ai ajouté quelques scripts. Mais j'ai eu quelques problèmes donc je les ai entrés manuellement. Utilisation:

<tal:block tal:repeat="reqt view.reqts['css']"> 
    <link rel="stylesheet" type="text/css" 
    href="${request.static_url(reqt)}"/> 
</tal:block> 

question a été:

<script type="text/javascript" src="{{request.static_url(reqt)}}"></script> 
File "/Users/roy/Applications/miniconda3/envs/WebAppBatman/lib/python3.6/site-packages/pyramid/url.py", line 644, in static_url 
    if not os.path.isabs(path): 
File "/Users/roy/Applications/miniconda3/envs/WebAppBatman/lib/python3.6/posixpath.py", line 64, in isabs 
    s = os.fspath(s) 
TypeError: expected str, bytes or os.PathLike object, not Undefined 

Pour être complet, voici la vue:

@view_config(renderer='templates/settings.jinja2') 
def settings(self): 
    html = [] 
    if 'submit' in self.request.POST: 
     posted_formid = self.request.POST['__formid__'] 
     for (formid, form) in forms.items(): 
      if formid == posted_formid: 
       try: 
        controls = self.request.POST.items() 
        form['captured'] = form['form'].validate(controls) 


        html.append(form['form'].render(form['captured'])) 
       except deform.ValidationFailure as e: 
        # the submitted values could not be validated 
        html.append(e.render()) 
      else: 
       if form['captured'] is not None: 
        html.append(form['form'].render(form['captured'])) 
       else: 
        html.append(form['form'].render()) 
    else: 
     for _, form in forms.items(): 
      html.append(form['form'].render()) 

    reqts = forms['form1']['form'].get_widget_resources() 

    html = ''.join(html) 

    # values passed to template for rendering 
    return {'form': html, 'page_title': 'Settings', 'reqts': reqts} 

Répondre

0

Je l'ai travailler! C'était dû aux scripts que je soupçonnais. Voici une syntaxe de travail en utilisant jinja2:

{% for reqt in reqts['js'] %} 
<script src="{{request.static_url(reqt)}}" 
      type="text/javascript"></script> 
{% endfor %} 

je n'étais pas en mesure de le faire fonctionner à l'aide tap:repeat.