Sophie

Sophie

distrib > Fedora > 20 > i386 > by-pkgid > 422242acff54b9373d7d4b7f73232ce1 > files > 703

python3-django-doc-1.6.7-1.fc20.noarch.rpm


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>Django 1.3 beta 1 release notes &mdash; Django 1.6.7 documentation</title>
    
    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
    
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '../',
        VERSION:     '1.6.7',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>
    <script type="text/javascript" src="../_static/jquery.js"></script>
    <script type="text/javascript" src="../_static/underscore.js"></script>
    <script type="text/javascript" src="../_static/doctools.js"></script>
    <link rel="top" title="Django 1.6.7 documentation" href="../index.html" />
    <link rel="up" title="Release notes" href="index.html" />
    <link rel="next" title="Django 1.3 alpha 1 release notes" href="1.3-alpha-1.html" />
    <link rel="prev" title="Django 1.4 alpha release notes" href="1.4-alpha-1.html" />



 
<script type="text/javascript" src="../templatebuiltins.js"></script>
<script type="text/javascript">
(function($) {
    if (!django_template_builtins) {
       // templatebuiltins.js missing, do nothing.
       return;
    }
    $(document).ready(function() {
        // Hyperlink Django template tags and filters
        var base = "../ref/templates/builtins.html";
        if (base == "#") {
            // Special case for builtins.html itself
            base = "";
        }
        // Tags are keywords, class '.k'
        $("div.highlight\\-html\\+django span.k").each(function(i, elem) {
             var tagname = $(elem).text();
             if ($.inArray(tagname, django_template_builtins.ttags) != -1) {
                 var fragment = tagname.replace(/_/, '-');
                 $(elem).html("<a href='" + base + "#" + fragment + "'>" + tagname + "</a>");
             }
        });
        // Filters are functions, class '.nf'
        $("div.highlight\\-html\\+django span.nf").each(function(i, elem) {
             var filtername = $(elem).text();
             if ($.inArray(filtername, django_template_builtins.tfilters) != -1) {
                 var fragment = filtername.replace(/_/, '-');
                 $(elem).html("<a href='" + base + "#" + fragment + "'>" + filtername + "</a>");
             }
        });
    });
})(jQuery);
</script>


  </head>
  <body>

    <div class="document">
  <div id="custom-doc" class="yui-t6">
    <div id="hd">
      <h1><a href="../index.html">Django 1.6.7 documentation</a></h1>
      <div id="global-nav">
        <a title="Home page" href="../index.html">Home</a>  |
        <a title="Table of contents" href="../contents.html">Table of contents</a>  |
        <a title="Global index" href="../genindex.html">Index</a>  |
        <a title="Module index" href="../py-modindex.html">Modules</a>
      </div>
      <div class="nav">
    &laquo; <a href="1.4-alpha-1.html" title="Django 1.4 alpha release notes">previous</a> 
     |
    <a href="index.html" title="Release notes" accesskey="U">up</a>
   |
    <a href="1.3-alpha-1.html" title="Django 1.3 alpha 1 release notes">next</a> &raquo;</div>
    </div>
    
    <div id="bd">
      <div id="yui-main">
        <div class="yui-b">
          <div class="yui-g" id="releases-1.3-beta-1">
            
  <div class="section" id="s-django-1-3-beta-1-release-notes">
<span id="django-1-3-beta-1-release-notes"></span><h1>Django 1.3 beta 1 release notes<a class="headerlink" href="#django-1-3-beta-1-release-notes" title="Permalink to this headline">¶</a></h1>
<p>Welcome to Django 1.3 beta 1!</p>
<p>This is the second in a series of preview/development releases leading
up to the eventual release of Django 1.3. This release is primarily
targeted at developers who are interested in trying out new features
and testing the Django codebase to help identify and resolve bugs
prior to the final 1.3 release.</p>
<p>As such, this release is <em>not</em> intended for production use, and any such use
is discouraged.</p>
<div class="section" id="s-what-s-new-in-django-1-3-beta-1">
<span id="what-s-new-in-django-1-3-beta-1"></span><h2>What&#8217;s new in Django 1.3 beta 1<a class="headerlink" href="#what-s-new-in-django-1-3-beta-1" title="Permalink to this headline">¶</a></h2>
<div class="section" id="s-further-tweaks-to-the-staticfiles-app">
<span id="further-tweaks-to-the-staticfiles-app"></span><h3>Further tweaks to the staticfiles app<a class="headerlink" href="#further-tweaks-to-the-staticfiles-app" title="Permalink to this headline">¶</a></h3>
<p>Django 1.3 ships with a new contrib app <a class="reference internal" href="../ref/contrib/staticfiles.html#module-django.contrib.staticfiles" title="django.contrib.staticfiles: An app for handling static files."><tt class="xref py py-mod docutils literal"><span class="pre">django.contrib.staticfiles</span></tt></a>
to help developers handle the static media files (images, CSS, JavaScript,
etc.) that are needed to render a complete web page.</p>
<p>The <a class="reference internal" href="../ref/contrib/staticfiles.html#module-django.contrib.staticfiles" title="django.contrib.staticfiles: An app for handling static files."><tt class="xref py py-mod docutils literal"><span class="pre">staticfiles</span></tt></a> app ships with the ability to
automatically serve static files during development (if the <a class="reference internal" href="../ref/settings.html#std:setting-DEBUG"><tt class="xref std std-setting docutils literal"><span class="pre">DEBUG</span></tt></a>
setting is <tt class="docutils literal"><span class="pre">True</span></tt>) when using the <a class="reference internal" href="../ref/django-admin.html#django-admin-runserver"><tt class="xref std std-djadmin docutils literal"><span class="pre">runserver</span></tt></a> management command.
Based on feedback from the community this release adds two new options to the
<a class="reference internal" href="../ref/django-admin.html#django-admin-runserver"><tt class="xref std std-djadmin docutils literal"><span class="pre">runserver</span></tt></a> command to modify this behavior:</p>
<ul class="simple">
<li><tt class="docutils literal"><span class="pre">--nostatic</span></tt>: prevents the <a class="reference internal" href="../ref/django-admin.html#django-admin-runserver"><tt class="xref std std-djadmin docutils literal"><span class="pre">runserver</span></tt></a> command from serving
files completely.</li>
<li><tt class="docutils literal"><span class="pre">--insecure</span></tt>: enables serving of static files even if running with
<a class="reference internal" href="../ref/settings.html#std:setting-DEBUG"><tt class="xref std std-setting docutils literal"><span class="pre">DEBUG</span></tt></a> set to False. (This is <strong>not</strong> recommended!)</li>
</ul>
<p>See the <a class="reference internal" href="../ref/contrib/staticfiles.html"><em>staticfiles reference documentation</em></a>
for more details, or learn <a class="reference internal" href="../howto/static-files/index.html"><em>how to manage static files</em></a>.</p>
</div>
<div class="section" id="s-translation-comments">
<span id="translation-comments"></span><h3>Translation comments<a class="headerlink" href="#translation-comments" title="Permalink to this headline">¶</a></h3>
<p>If you would like to give translators hints about a translatable string, you
can add a comment prefixed with the <tt class="docutils literal"><span class="pre">Translators</span></tt> keyword on the line
preceding the string, e.g.:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="k">def</span> <span class="nf">my_view</span><span class="p">(</span><span class="n">request</span><span class="p">):</span>
    <span class="c"># Translators: This message appears on the home page only</span>
    <span class="n">output</span> <span class="o">=</span> <span class="n">ugettext</span><span class="p">(</span><span class="s">&quot;Welcome to my site.&quot;</span><span class="p">)</span>
</pre></div>
</div>
<p>The comment will appear in the resulting .po file and should also be
displayed by most translation tools.</p>
<p>For more information, see <a class="reference internal" href="../topics/i18n/translation.html#translator-comments"><em>Comments for translators</em></a>.</p>
</div>
<div class="section" id="s-permissions-for-inactive-users">
<span id="permissions-for-inactive-users"></span><h3>Permissions for inactive users<a class="headerlink" href="#permissions-for-inactive-users" title="Permalink to this headline">¶</a></h3>
<p>If you provide a custom auth backend with <tt class="docutils literal"><span class="pre">supports_inactive_user</span></tt> set to
<tt class="docutils literal"><span class="pre">True</span></tt>, an inactive user model will check the backend for permissions.
This is useful for further centralizing the permission handling. See the
<a class="reference internal" href="../topics/auth/index.html"><em>authentication docs</em></a> for more details.</p>
</div>
</div>
<div class="section" id="s-backwards-incompatible-changes-in-1-3-alpha-2">
<span id="backwards-incompatible-changes-in-1-3-alpha-2"></span><h2>Backwards-incompatible changes in 1.3 alpha 2<a class="headerlink" href="#backwards-incompatible-changes-in-1-3-alpha-2" title="Permalink to this headline">¶</a></h2>
<div class="section" id="s-change-to-admin-lookup-filters">
<span id="change-to-admin-lookup-filters"></span><h3>Change to admin lookup filters<a class="headerlink" href="#change-to-admin-lookup-filters" title="Permalink to this headline">¶</a></h3>
<p>The Django admin has long had an undocumented &#8220;feature&#8221; allowing savvy
users to manipulate the query string of changelist pages to filter the
list of objects displayed. However, this also creates a security
issue, as a staff user with sufficient knowledge of model structure
could use this &#8220;feature&#8221; to gain access to information he or she would
not normally have.</p>
<p>As a result, changelist filtering now explicitly validates all lookup
arguments in the query string, and permits only fields which are
directly on the model, or relations explicitly permitted by the
<tt class="docutils literal"><span class="pre">ModelAdmin</span></tt> definition. If you were relying on this undocumented
feature, you will need to update your <tt class="docutils literal"><span class="pre">ModelAdmin</span></tt> definitions to
whitelist the relations you choose to expose for filtering.</p>
</div>
<div class="section" id="s-introduction-of-static-url-and-static-root-settings">
<span id="introduction-of-static-url-and-static-root-settings"></span><h3>Introduction of STATIC_URL and STATIC_ROOT settings<a class="headerlink" href="#introduction-of-static-url-and-static-root-settings" title="Permalink to this headline">¶</a></h3>
<p>The newly introduced <a class="reference internal" href="../ref/contrib/staticfiles.html#module-django.contrib.staticfiles" title="django.contrib.staticfiles: An app for handling static files."><tt class="xref py py-mod docutils literal"><span class="pre">staticfiles</span></tt></a> app &#8211; which extends
Django&#8217;s abilities to handle static files for apps and projects &#8211; required the
additon of two new settings to refer to those files in templates and code,
especially in contrast to the <a class="reference internal" href="../ref/settings.html#std:setting-MEDIA_URL"><tt class="xref std std-setting docutils literal"><span class="pre">MEDIA_URL</span></tt></a> and <a class="reference internal" href="../ref/settings.html#std:setting-MEDIA_ROOT"><tt class="xref std std-setting docutils literal"><span class="pre">MEDIA_ROOT</span></tt></a>
settings that refer to user-uploaded files.</p>
<p>Prior to 1.3 alpha 2 these settings were called <tt class="docutils literal"><span class="pre">STATICFILES_URL</span></tt> and
<tt class="docutils literal"><span class="pre">STATICFILES_ROOT</span></tt> to follow the naming scheme for app-centric settings.
Based on feedback from the community it became apparent that those settings
created confusion, especially given the fact that handling static files is also
desired outside the use of the optional <a class="reference internal" href="../ref/contrib/staticfiles.html#module-django.contrib.staticfiles" title="django.contrib.staticfiles: An app for handling static files."><tt class="xref py py-mod docutils literal"><span class="pre">staticfiles</span></tt></a> app.</p>
<p>As a result, we took the following steps to rectify the issue:</p>
<ul class="simple">
<li>Two new global settings were added that will be used by, <strong>but are not
limited to</strong>, the <a class="reference internal" href="../ref/contrib/staticfiles.html"><em>staticfiles</em></a> app:</li>
<li><a class="reference internal" href="../ref/settings.html#std:setting-STATIC_ROOT"><tt class="xref std std-setting docutils literal"><span class="pre">STATIC_ROOT</span></tt></a> (formally <tt class="docutils literal"><span class="pre">STATICFILES_ROOT</span></tt>)</li>
<li><a class="reference internal" href="../ref/settings.html#std:setting-STATIC_URL"><tt class="xref std std-setting docutils literal"><span class="pre">STATIC_URL</span></tt></a> (formally <tt class="docutils literal"><span class="pre">STATICFILES_URL</span></tt>)</li>
<li>The <tt class="docutils literal"><span class="pre">django.contrib.staticfiles.templatetags.staticfiles.get_staticfiles_prefix</span></tt>
template tag was moved to Django&#8217;s core (<tt class="docutils literal"><span class="pre">django.templatetags.static</span></tt>) and
renamed to <a class="reference internal" href="../ref/templates/builtins.html#std:templatetag-get_static_prefix"><tt class="xref std std-ttag docutils literal"><span class="pre">get_static_prefix</span></tt></a>.</li>
<li>The <tt class="docutils literal"><span class="pre">django.contrib.staticfiles.context_processors.staticfiles</span></tt>
context processor was moved to Django&#8217;s core
(<tt class="docutils literal"><span class="pre">django.core.context_processors.static</span></tt>) and renamed to
<a class="reference internal" href="../ref/templates/api.html#django.core.context_processors.static" title="django.core.context_processors.static"><tt class="xref py py-func docutils literal"><span class="pre">static()</span></tt></a>.</li>
<li><a class="reference internal" href="../topics/forms/media.html#form-asset-paths"><em>Paths in asset definitions</em></a> now uses <a class="reference internal" href="../ref/settings.html#std:setting-STATIC_URL"><tt class="xref std std-setting docutils literal"><span class="pre">STATIC_URL</span></tt></a> as the prefix
<strong>if the value is not None</strong>, and falls back to the previously used
<a class="reference internal" href="../ref/settings.html#std:setting-MEDIA_URL"><tt class="xref std std-setting docutils literal"><span class="pre">MEDIA_URL</span></tt></a> setting otherwise.</li>
</ul>
</div>
<div class="section" id="s-changes-to-the-login-methods-of-the-admin">
<span id="changes-to-the-login-methods-of-the-admin"></span><h3>Changes to the login methods of the admin<a class="headerlink" href="#changes-to-the-login-methods-of-the-admin" title="Permalink to this headline">¶</a></h3>
<p>In previous version the admin app defined login methods in multiple locations
and ignored the almost identical implementation in the already used auth app.
A side effect of this duplication was the missing adoption of the changes made
in <a class="reference external" href="https://code.djangoproject.com/changeset/12634">r12634</a> to support a broader set of characters for usernames.</p>
<p>This release refactors the admin&#8217;s login mechanism to use a subclass of the
<a class="reference internal" href="../topics/auth/default.html#django.contrib.auth.forms.AuthenticationForm" title="django.contrib.auth.forms.AuthenticationForm"><tt class="xref py py-class docutils literal"><span class="pre">AuthenticationForm</span></tt></a> instead of a manual
form validation. The previously undocumented method
<tt class="docutils literal"><span class="pre">'django.contrib.admin.sites.AdminSite.display_login_form'</span></tt> has been removed
in favor of a new <a class="reference internal" href="../ref/contrib/admin/index.html#django.contrib.admin.AdminSite.login_form" title="django.contrib.admin.AdminSite.login_form"><tt class="xref py py-attr docutils literal"><span class="pre">login_form</span></tt></a>
attribute.</p>
</div>
</div>
<div class="section" id="s-changes-to-usstatefield">
<span id="changes-to-usstatefield"></span><h2>Changes to <tt class="docutils literal"><span class="pre">USStateField</span></tt><a class="headerlink" href="#changes-to-usstatefield" title="Permalink to this headline">¶</a></h2>
<p>The <tt class="docutils literal"><span class="pre">django.contrib.localflavor</span></tt> application contains collections
of code relevant to specific countries or cultures. One such is
<tt class="docutils literal"><span class="pre">USStateField</span></tt>, which provides a field for storing the two-letter postal
abbreviation of a U.S. state. This field has consistently caused problems,
however, because it is often used to store the state portion of a U.S postal
address, but not all &#8220;states&#8221; recognized by the U.S Postal Service are
actually states of the U.S. or even U.S. territory. Several
compromises over the list of choices resulted in some users feeling
the field supported too many locations, while others felt it supported
too few.</p>
<p>In Django 1.3 we&#8217;re taking a new approach to this problem, implemented
as a pair of changes:</p>
<ul class="simple">
<li>The choice list for <tt class="docutils literal"><span class="pre">USStateField</span></tt> has changed. Previously, it
consisted of the 50 U.S. states, the District of Columbia and
U.S. overseas territories. As of Django 1.3 it includes all previous
choices, plus the U.S. Armed Forces postal codes.</li>
<li>A new model field,
<tt class="docutils literal"><span class="pre">django.contrib.localflavor.us.models.USPostalCodeField</span></tt>, has
been added which draws its choices from a list of all postal
abbreviations recognized by the U.S Postal Service. This includes
all abbreviations recognized by <tt class="docutils literal"><span class="pre">USStateField</span></tt>, plus three
independent nations &#8211; the Federated States of Micronesia, the
Republic of the Marshall Islands and the Republic of Palau &#8211; which
are serviced under treaty by the U.S. postal system. A new form
widget, <tt class="docutils literal"><span class="pre">django.contrib.localflavor.us.forms.USPSSelect</span></tt>, is
also available and provides the same set of choices.</li>
</ul>
<p>Additionally, several finer-grained choice tuples are provided which
allow mixing and matching of subsets of the U.S. states and
territories, and other locations serviced by the U.S. postal
system. Consult the <tt class="docutils literal"><span class="pre">django.contrib.localflavor</span></tt> documentation
for more details.</p>
<p>The change to <tt class="docutils literal"><span class="pre">USStateField</span></tt> is technically backwards-incompatible for
users who expect this field to exclude Armed Forces locations. If you
need to support U.S. mailing addresses without Armed Forces locations,
see the list of choice tuples available in the localflavor
documentation.</p>
</div>
<div class="section" id="s-the-django-1-3-roadmap">
<span id="the-django-1-3-roadmap"></span><h2>The Django 1.3 roadmap<a class="headerlink" href="#the-django-1-3-roadmap" title="Permalink to this headline">¶</a></h2>
<p>Before the final Django 1.3 release, several other preview/development
releases will be made available. The current schedule consists of at
least the following:</p>
<ul class="simple">
<li>Week of <strong>January 24, 2011</strong>: First Django 1.3 release
candidate. String freeze for translations.</li>
<li>Week of <strong>January 31, 2011</strong>: Django 1.3 final release.</li>
</ul>
<p>If necessary, additional beta or release-candidate packages
will be issued prior to the final 1.3 release. Django 1.3 will be
released approximately one week after the final release candidate.</p>
</div>
<div class="section" id="s-what-you-can-do-to-help">
<span id="what-you-can-do-to-help"></span><h2>What you can do to help<a class="headerlink" href="#what-you-can-do-to-help" title="Permalink to this headline">¶</a></h2>
<p>In order to provide a high-quality 1.3 release, we need your help. Although this
beta release is, again, <em>not</em> intended for production use, you can help the
Django team by trying out the beta codebase in a safe test environment and
reporting any bugs or issues you encounter. The Django ticket tracker is the
central place to search for open issues:</p>
<ul class="simple">
<li><a class="reference external" href="https://code.djangoproject.com/timeline">https://code.djangoproject.com/timeline</a></li>
</ul>
<p>Please open new tickets if no existing ticket corresponds to a problem you&#8217;re
running into.</p>
<p>Additionally, discussion of Django development, including progress toward the
1.3 release, takes place daily on the django-developers mailing list:</p>
<ul class="simple">
<li><a class="reference external" href="http://groups.google.com/group/django-developers">http://groups.google.com/group/django-developers</a></li>
</ul>
<p>... and in the <tt class="docutils literal"><span class="pre">#django-dev</span></tt> IRC channel on <tt class="docutils literal"><span class="pre">irc.freenode.net</span></tt>. If you&#8217;re
interested in helping out with Django&#8217;s development, feel free to join the
discussions there.</p>
<p>Django&#8217;s online documentation also includes pointers on how to contribute to
Django:</p>
<ul class="simple">
<li><a class="reference internal" href="../internals/contributing/index.html"><em>How to contribute to Django</em></a></li>
</ul>
<p>Contributions on any level &#8211; developing code, writing documentation or simply
triaging tickets and helping to test proposed bugfixes &#8211; are always welcome and
appreciated.</p>
</div>
</div>


          </div>         
        </div>
      </div>
      
        
          <div class="yui-b" id="sidebar">
            
      <div class="sphinxsidebar">
        <div class="sphinxsidebarwrapper">
  <h3><a href="../contents.html">Table Of Contents</a></h3>
  <ul>
<li><a class="reference internal" href="#">Django 1.3 beta 1 release notes</a><ul>
<li><a class="reference internal" href="#what-s-new-in-django-1-3-beta-1">What&#8217;s new in Django 1.3 beta 1</a><ul>
<li><a class="reference internal" href="#further-tweaks-to-the-staticfiles-app">Further tweaks to the staticfiles app</a></li>
<li><a class="reference internal" href="#translation-comments">Translation comments</a></li>
<li><a class="reference internal" href="#permissions-for-inactive-users">Permissions for inactive users</a></li>
</ul>
</li>
<li><a class="reference internal" href="#backwards-incompatible-changes-in-1-3-alpha-2">Backwards-incompatible changes in 1.3 alpha 2</a><ul>
<li><a class="reference internal" href="#change-to-admin-lookup-filters">Change to admin lookup filters</a></li>
<li><a class="reference internal" href="#introduction-of-static-url-and-static-root-settings">Introduction of STATIC_URL and STATIC_ROOT settings</a></li>
<li><a class="reference internal" href="#changes-to-the-login-methods-of-the-admin">Changes to the login methods of the admin</a></li>
</ul>
</li>
<li><a class="reference internal" href="#changes-to-usstatefield">Changes to <tt class="docutils literal"><span class="pre">USStateField</span></tt></a></li>
<li><a class="reference internal" href="#the-django-1-3-roadmap">The Django 1.3 roadmap</a></li>
<li><a class="reference internal" href="#what-you-can-do-to-help">What you can do to help</a></li>
</ul>
</li>
</ul>

  <h3>Browse</h3>
  <ul>
    
      <li>Prev: <a href="1.4-alpha-1.html">Django 1.4 alpha release notes</a></li>
    
    
      <li>Next: <a href="1.3-alpha-1.html">Django 1.3 alpha 1 release notes</a></li>
    
  </ul>
  <h3>You are here:</h3>
  <ul>
      <li>
        <a href="../index.html">Django 1.6.7 documentation</a>
        
          <ul><li><a href="index.html">Release notes</a>
        
        <ul><li>Django 1.3 beta 1 release notes</li></ul>
        </li></ul>
      </li>
  </ul>  

  <h3>This Page</h3>
  <ul class="this-page-menu">
    <li><a href="../_sources/releases/1.3-beta-1.txt"
           rel="nofollow">Show Source</a></li>
  </ul>
<div id="searchbox" style="display: none">
  <h3>Quick search</h3>
    <form class="search" action="../search.html" method="get">
      <input type="text" name="q" />
      <input type="submit" value="Go" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    <p class="searchtip" style="font-size: 90%">
    Enter search terms or a module, class or function name.
    </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
              <h3>Last update:</h3>
              <p class="topless">Sep 26, 2014</p>
          </div> 
        
      
    </div>
    
    <div id="ft">
      <div class="nav">
    &laquo; <a href="1.4-alpha-1.html" title="Django 1.4 alpha release notes">previous</a> 
     |
    <a href="index.html" title="Release notes" accesskey="U">up</a>
   |
    <a href="1.3-alpha-1.html" title="Django 1.3 alpha 1 release notes">next</a> &raquo;</div>
    </div>
  </div>

      <div class="clearer"></div>
    </div>
  </body>
</html>