Bitbucket is a code hosting site with unlimited public and private repositories. We're also free for small teams!

Close

Python Source Code Field

If you need to store python source code in a field in a django model, this is the app you need.

Obviously, you should not be accepting any old user data if you will be executing it, but for my use case (admin users only, needed complex data rules that varied between models), python code was the best choice.

So, you use it by:

  • $ python setup.py install

  • add python_field to your settings.INSTALLED_APPS (optional, but required if you want syntax highlighting).

  • Use as follows in your model:

    from django.db import models
    from python_field.fields import PythonCodeField
    
    class MyModel(models.Model):
        ....
        source = PythonCodeField(blank=True, null=True)
    
        ....
    

The text will be compiled using the inbuild python compile() function, and errors will be shown in the form errors field.

CodeMirror and Syntax Highlighting

This package uses parts of the CodeMirror package for syntax highlighting, and for replacing the textarea with an editable iframe.

Parts of the CodeMirror package that are not required have not been included, and the package has been minified. [This is not the case just yet.]

The original license file is included for your reference.

CodeMirror can be found at http://codemirror.net/

Recent activity

Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.