mirror of
https://github.com/django/django.git
synced 2025-10-24 14:16:09 +00:00
Converted links to external topics so they use intersphinx extension markup.
This allows to make these links more resilent to changes in the target URLs. Thanks Jannis for the report and Aymeric Augustin for the patch. Fixes #16586. git-svn-id: http://code.djangoproject.com/svn/django/trunk@16720 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
@@ -335,15 +335,13 @@ responsible for returning a ``Node`` instance based on the contents of the tag.
|
||||
|
||||
For example, let's write a template tag, ``{% current_time %}``, that displays
|
||||
the current date/time, formatted according to a parameter given in the tag, in
|
||||
`strftime syntax`_. It's a good idea to decide the tag syntax before anything
|
||||
else. In our case, let's say the tag should be used like this:
|
||||
:func:`~time.strftime` syntax. It's a good idea to decide the tag syntax before
|
||||
anything else. In our case, let's say the tag should be used like this:
|
||||
|
||||
.. code-block:: html+django
|
||||
|
||||
<p>The time is {% current_time "%Y-%m-%d %I:%M %p" %}.</p>
|
||||
|
||||
.. _`strftime syntax`: http://docs.python.org/library/time.html#time.strftime
|
||||
|
||||
The parser for this function should grab the parameter and create a ``Node``
|
||||
object::
|
||||
|
||||
|
||||
@@ -9,10 +9,8 @@ Django into production.
|
||||
.. _mod_wsgi: http://code.google.com/p/modwsgi/
|
||||
|
||||
mod_wsgi is an Apache module which can be used to host any Python application
|
||||
which supports the `Python WSGI interface`_, including Django. Django will work
|
||||
with any version of Apache which supports mod_wsgi.
|
||||
|
||||
.. _python wsgi interface: http://www.python.org/dev/peps/pep-0333/
|
||||
which supports the Python WSGI interface described in :pep:`3333`, including
|
||||
Django. Django will work with any version of Apache which supports mod_wsgi.
|
||||
|
||||
The `official mod_wsgi documentation`_ is fantastic; it's your source for all
|
||||
the details about how to use mod_wsgi. You'll probably want to start with the
|
||||
|
||||
@@ -3,17 +3,15 @@ Outputting CSV with Django
|
||||
==========================
|
||||
|
||||
This document explains how to output CSV (Comma Separated Values) dynamically
|
||||
using Django views. To do this, you can either use the `Python CSV library`_ or
|
||||
the Django template system.
|
||||
|
||||
.. _Python CSV library: http://docs.python.org/library/csv.html
|
||||
using Django views. To do this, you can either use the Python CSV library or the
|
||||
Django template system.
|
||||
|
||||
Using the Python CSV library
|
||||
============================
|
||||
|
||||
Python comes with a CSV library, ``csv``. The key to using it with Django is
|
||||
that the ``csv`` module's CSV-creation capability acts on file-like objects, and
|
||||
Django's :class:`~django.http.HttpResponse` objects are file-like objects.
|
||||
Python comes with a CSV library, :mod:`csv`. The key to using it with Django is
|
||||
that the :mod:`csv` module's CSV-creation capability acts on file-like objects,
|
||||
and Django's :class:`~django.http.HttpResponse` objects are file-like objects.
|
||||
|
||||
Here's an example::
|
||||
|
||||
@@ -34,7 +32,7 @@ Here's an example::
|
||||
The code and comments should be self-explanatory, but a few things deserve a
|
||||
mention:
|
||||
|
||||
* The response gets a special MIME type, ``text/csv``. This tells
|
||||
* The response gets a special MIME type, :mimetype:`text/csv`. This tells
|
||||
browsers that the document is a CSV file, rather than an HTML file. If
|
||||
you leave this off, browsers will probably interpret the output as HTML,
|
||||
which will result in ugly, scary gobbledygook in the browser window.
|
||||
@@ -59,7 +57,7 @@ mention:
|
||||
Handling Unicode
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
Python's ``csv`` module does not support Unicode input. Since Django uses
|
||||
Python's :mod:`csv` module does not support Unicode input. Since Django uses
|
||||
Unicode internally this means strings read from sources such as
|
||||
:class:`~django.http.HttpRequest` are potentially problematic. There are a few
|
||||
options for handling this:
|
||||
@@ -70,20 +68,18 @@ options for handling this:
|
||||
section`_.
|
||||
|
||||
* Use the `python-unicodecsv module`_, which aims to be a drop-in
|
||||
replacement for ``csv`` that gracefully handles Unicode.
|
||||
replacement for :mod:`csv` that gracefully handles Unicode.
|
||||
|
||||
For more information, see the Python `CSV File Reading and Writing`_
|
||||
documentation.
|
||||
For more information, see the Python documentation of the :mod:`csv` module.
|
||||
|
||||
.. _`csv module's examples section`: http://docs.python.org/library/csv.html#examples
|
||||
.. _`python-unicodecsv module`: https://github.com/jdunck/python-unicodecsv
|
||||
.. _`CSV File Reading and Writing`: http://docs.python.org/library/csv.html
|
||||
|
||||
Using the template system
|
||||
=========================
|
||||
|
||||
Alternatively, you can use the :doc:`Django template system </topics/templates>`
|
||||
to generate CSV. This is lower-level than using the convenient Python ``csv``
|
||||
to generate CSV. This is lower-level than using the convenient Python :mod:`csv`
|
||||
module, but the solution is presented here for completeness.
|
||||
|
||||
The idea here is to pass a list of items to your template, and have the
|
||||
|
||||
@@ -63,10 +63,11 @@ Here's a "Hello World" example::
|
||||
The code and comments should be self-explanatory, but a few things deserve a
|
||||
mention:
|
||||
|
||||
* The response gets a special MIME type, ``application/pdf``. This tells
|
||||
browsers that the document is a PDF file, rather than an HTML file. If
|
||||
you leave this off, browsers will probably interpret the output as HTML,
|
||||
which would result in ugly, scary gobbledygook in the browser window.
|
||||
* The response gets a special MIME type, :mimetype:`application/pdf`. This
|
||||
tells browsers that the document is a PDF file, rather than an HTML file.
|
||||
If you leave this off, browsers will probably interpret the output as
|
||||
HTML, which would result in ugly, scary gobbledygook in the browser
|
||||
window.
|
||||
|
||||
* The response gets an additional ``Content-Disposition`` header, which
|
||||
contains the name of the PDF file. This filename is arbitrary: Call it
|
||||
@@ -97,9 +98,9 @@ Complex PDFs
|
||||
============
|
||||
|
||||
If you're creating a complex PDF document with ReportLab, consider using the
|
||||
cStringIO_ library as a temporary holding place for your PDF file. The cStringIO
|
||||
:mod:`cStringIO` library as a temporary holding place for your PDF file. This
|
||||
library provides a file-like object interface that is particularly efficient.
|
||||
Here's the above "Hello World" example rewritten to use ``cStringIO``::
|
||||
Here's the above "Hello World" example rewritten to use :mod:`cStringIO`::
|
||||
|
||||
# Fall back to StringIO in environments where cStringIO is not available
|
||||
try:
|
||||
@@ -133,8 +134,6 @@ Here's the above "Hello World" example rewritten to use ``cStringIO``::
|
||||
response.write(pdf)
|
||||
return response
|
||||
|
||||
.. _cStringIO: http://docs.python.org/library/stringio.html#module-cStringIO
|
||||
|
||||
Further resources
|
||||
=================
|
||||
|
||||
|
||||
Reference in New Issue
Block a user