I'm trying to deploy django in my public_html directory which is served
via http://servername/~username/ by mod_wsgi in apache.
However, I'm running into some errors when I have parameters to my views,
such as in the admin interface:
--------
{{{
Environment:
Request Method: GET
Request URL: https://192.168.0.2/~hordur/django/admin/sites/site/
Django Version: 1.5.1
Python Version: 2.7.3
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'django.contrib.admindocs',
'django.contrib.flatpages',
'south',
'django_extensions',
'debug_toolbar',
'micawber.contrib.mcdjango',
'hordur')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
'debug_toolbar.middleware.DebugToolbarMiddleware')
Template error:
In template /home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/contrib/admin/templates/admin/change_list.html, error at
line 91
a float is required
81 : {% endif %}
82 : {% endblock %}
83 :
84 : <form id="changelist-form" action="" method="post"{% if
cl.formset.is_multipart %} enctype="multipart/form-data"{% endif %}>{%
csrf_token %}
85 : {% if cl.formset %}
86 : <div>{{ cl.formset.management_form }}</div>
87 : {% endif %}
88 :
89 : {% block result_list %}
90 : {% if action_form and actions_on_top and
cl.full_result_count %}{% admin_actions %}{% endif %}
91 : {% result_list cl %}
92 : {% if action_form and actions_on_bottom and
cl.full_result_count %}{% admin_actions %}{% endif %}
93 : {% endblock %}
94 : {% block pagination %}{% pagination cl %}{% endblock %}
95 : </form>
96 : </div>
97 : </div>
98 : {% endblock %}
99 :
Traceback:
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/core/handlers/base.py" in get_response
140. response = response.render()
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/template/response.py" in render
105. self.content = self.rendered_content
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/template/response.py" in rendered_content
82. content = template.render(context)
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/template/base.py" in render
140. return self._render(context)
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/test/utils.py" in instrumented_test_render
65. return self.nodelist.render(context)
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/template/base.py" in render
830. bit = self.render_node(node, context)
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/template/debug.py" in render_node
74. return node.render(context)
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/template/loader_tags.py" in render
124. return compiled_parent._render(context)
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/test/utils.py" in instrumented_test_render
65. return self.nodelist.render(context)
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/template/base.py" in render
830. bit = self.render_node(node, context)
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/template/debug.py" in render_node
74. return node.render(context)
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/template/loader_tags.py" in render
124. return compiled_parent._render(context)
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/test/utils.py" in instrumented_test_render
65. return self.nodelist.render(context)
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/template/base.py" in render
830. bit = self.render_node(node, context)
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/template/debug.py" in render_node
74. return node.render(context)
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/template/loader_tags.py" in render
63. result = block.nodelist.render(context)
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/template/base.py" in render
830. bit = self.render_node(node, context)
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/template/debug.py" in render_node
74. return node.render(context)
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/template/loader_tags.py" in render
63. result = block.nodelist.render(context)
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/template/base.py" in render
830. bit = self.render_node(node, context)
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/template/debug.py" in render_node
74. return node.render(context)
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/template/base.py" in render
1185. _dict = func(*resolved_args,
**resolved_kwargs)
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/contrib/admin/templatetags/admin_list.py" in result_list
286. 'results': list(results(cl))}
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/contrib/admin/templatetags/admin_list.py" in results
264. yield ResultList(None, items_for_result(cl, res, None))
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/contrib/admin/templatetags/admin_list.py" in __init__
256. super(ResultList, self).__init__(*items)
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/contrib/admin/templatetags/admin_list.py" in
items_for_result
219. url = cl.url_for_result(result)
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/contrib/admin/views/main.py" in url_for_result
384.
current_app=self.model_admin.admin_site.name)
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/core/urlresolvers.py" in reverse
496. return iri_to_uri(resolver._reverse_with_prefix(view, prefix,
*args, **kwargs))
File "/home/hordur/.virtualenvs/hordur_website/lib/python2.7/site-
packages/django/core/urlresolvers.py" in _reverse_with_prefix
391. candidate = (prefix_norm + result) %
dict(zip(prefix_args + params, unicode_args))
Exception Type: TypeError at /admin/sites/site/
Exception Value: a float is required
}}}
-------
What seems to be the problem is that the ~ is replaced with %7E by
urlquote:
https://github.com/django/django/blob/90e530978d590a5bdcf75525aa03f844766018b8/django/core/urlresolvers.py#L384
This causes the string formatting to fail because %7E expects a float.
Following is a test case reproduces the error.
{{{
from django.core.urlresolvers import reverse
class TildaTest(TestCase):
urls = 'mysite.urls'
def test(self):
self.assertEqual(reverse('test', prefix='/~test/', args=(1,)),
'/~test/test/1/')
}}}
and the mysite.urls file:
{{{
from django.conf.urls import patterns, include, url
urlpatterns = patterns('',
url(r'^test/(?P<id>\d+)/$', 'test', {}, name='test'),
)
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/20547>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* needs_better_patch: => 0
* needs_tests: => 0
* needs_docs: => 0
Comment:
Hi,
Thanks for the detailed report.
Can you check if the issue is fixed with the latest version?
It looks like a duplicate of #20022.
--
Ticket URL: <https://code.djangoproject.com/ticket/20547#comment:1>
* cc: bmispelon@… (added)
--
Ticket URL: <https://code.djangoproject.com/ticket/20547#comment:2>
Comment (by hordur@…):
Yes, it is indeed fixed with the latest version from repository, sorry
about that.
It is not in 1.5.1, however. Will it be included in the next 1.5. bug fix
release?
--
Ticket URL: <https://code.djangoproject.com/ticket/20547#comment:3>
* status: new => closed
* resolution: => duplicate
Comment:
The patch was merged into `master` at the time (which became 1.6), and it
wasn't backported to the `stable/1.5.x` branch.
--
Ticket URL: <https://code.djangoproject.com/ticket/20547#comment:4>