├── README
└── snippets
├── htmldjango.snippets
└── django.snippets
/README:
--------------------------------------------------------------------------------
1 | Installation
2 | ============
3 |
4 | Install SnipMate:
5 | http://www.vim.org/scripts/script.php?script_id=2540
6 |
7 | Copy `django.snippets` and `django_template.snippets` to your snippets
8 | directory, typically at ~/.vim/snippets.
9 |
10 | Activate the snippets by using the filetype setting. For example:
11 |
12 | :set ft=python.django
13 |
14 | For Django templates:
15 |
16 | :set ft=htmldjango.html
17 |
18 | To set these automatically each time you run vim, add the following lines to
19 | your .vimrc:
20 |
21 | autocmd FileType python set ft=python.django " For SnipMate
22 | autocmd FileType html set ft=htmldjango.html " For SnipMate
23 |
24 | Enjoy!
25 |
--------------------------------------------------------------------------------
/snippets/htmldjango.snippets:
--------------------------------------------------------------------------------
1 | # Generic Tags
2 | snippet %
3 | {% ${1} %}${2}
4 | snippet %%
5 | {% ${1:tag_name} %}
6 | ${2}
7 | {% end$1 %}
8 | snippet {
9 | {{ ${1} }}${2}
10 | # Template Tags
11 |
12 | snippet autoescape
13 | {% autoescape ${1:off} %}
14 | ${2}
15 | {% endautoescape %}
16 | snippet block
17 | {% block ${1} %}
18 | ${2}
19 | {% endblock %}
20 | snippet #
21 | {# ${1:comment} #}
22 | snippet comment
23 | {% comment %}
24 | ${1}
25 | {% endcomment %}
26 | snippet cycle
27 | {% cycle ${1:val1} ${2:val2} ${3:as ${4}} %}
28 | snippet debug
29 | {% debug %}
30 | snippet extends
31 | {% extends "${1:base.html}" %}
32 | snippet filter
33 | {% filter ${1} %}
34 | ${2}
35 | {% endfilter %}
36 | snippet firstof
37 | {% firstof ${1} %}
38 | snippet for
39 | {% for ${1} in ${2} %}
40 | ${3}
41 | {% endfor %}
42 | snippet empty
43 | {% empty %}
44 | ${1}
45 | snippet if
46 | {% if ${1} %}
47 | ${2}
48 | {% endif %}
49 | snippet else
50 | {% else %}
51 | ${1}
52 | snippet ifchanged
53 | {% ifchanged %}${1}{% endifchanged %}
54 | snippet ifequal
55 | {% ifequal ${1} ${2} %}
56 | ${3}
57 | {% endifequal %}
58 | snippet ifnotequal
59 | {% ifnotequal ${1} ${2} %}
60 | ${3}
61 | {% endifnotequal %}
62 | snippet include
63 | {% include "${1}" %}
64 | snippet load
65 | {% load ${1} %}
66 | snippet now
67 | {% now "${1:jS F Y H:i}" %}
68 | snippet regroup
69 | {% regroup ${1} by ${2} as ${3} %}
70 | snippet spaceless
71 | {% spaceless %}${1}{% endspaceless %}
72 | snippet ssi
73 | {% ssi ${1} %}
74 | snippet trans
75 | {% trans "${1:string}" %}
76 | snippet url
77 | {% url ${1} as ${2} %}
78 | snippet widthratio
79 | {% widthratio ${1:this_value} ${2:max_value} ${3:100} %}
80 | snippet with
81 | {% with ${1} as ${2} %}
82 | # Template Filters
83 |
84 | # Note: Since SnipMate can't determine which template filter you are
85 | # expanding without the "|" character, these do not add the "|"
86 | # character. These save a few keystrokes still.
87 |
88 | # Note: Template tags that take no arguments are not implemented.
89 |
90 | snippet add
91 | add:"${1}"
92 | snippet center
93 | center:"${1}"
94 | snippet cut
95 | cut:"${1}"
96 | snippet date
97 | date:"${1}"
98 | snippet default
99 | default:"${1}"
100 | snippet defaultifnone
101 | default_if_none:"${1}"
102 | snippet dictsort
103 | dictsort:"${1}"
104 | snippet dictsortrev
105 | dictsortreversed:"${1}"
106 | snippet divisibleby
107 | divisibleby:"${1}"
108 | snippet floatformat
109 | floatformat:"${1}"
110 | snippet getdigit
111 | get_digit:"${1}"
112 | snippet join
113 | join:"${1}"
114 | snippet lengthis
115 | length_is:"${1}"
116 | snippet pluralize
117 | pluralize:"${1}"
118 | snippet removetags
119 | removetags:"${1}"
120 | snippet slice
121 | slice:"${1}"
122 | snippet stringformat
123 | stringformat:"${1}"
124 | snippet time
125 | time:"${1}"
126 | snippet truncatewords
127 | truncatewords:${1}
128 | snippet truncatewordshtml
129 | truncatewords_html:${1}
130 | snippet urlizetrunc
131 | urlizetrunc:${1}
132 | snippet wordwrap
133 | wordwrap:${1}
134 |
135 |
--------------------------------------------------------------------------------
/snippets/django.snippets:
--------------------------------------------------------------------------------
1 | # Model Fields
2 |
3 | # Note: Optional arguments are using defaults that match what Django will use
4 | # as a default, e.g. with max_length fields. Doing this as a form of self
5 | # documentation and to make it easy to know whether you should override the
6 | # default or not.
7 |
8 | # Note: Optional arguments that are booleans will use the opposite since you
9 | # can either not specify them, or override them, e.g. auto_now_add=False.
10 |
11 | snippet auto
12 | ${1:FIELDNAME} = models.AutoField()
13 | snippet bool
14 | ${1:FIELDNAME} = models.BooleanField(${2:default=True})
15 | snippet char
16 | ${1:FIELDNAME} = models.CharField(max_length=${2}${3:, blank=True})
17 | snippet comma
18 | ${1:FIELDNAME} = models.CommaSeparatedIntegerField(max_length=${2}${3:, blank=True})
19 | snippet date
20 | ${1:FIELDNAME} = models.DateField(${2:auto_now_add=True, auto_now=True}${3:, blank=True, null=True})
21 | snippet datetime
22 | ${1:FIELDNAME} = models.DateTimeField(${2:auto_now_add=True, auto_now=True}${3:, blank=True, null=True})
23 | snippet decimal
24 | ${1:FIELDNAME} = models.DecimalField(max_digits=${2}, decimal_places=${3})
25 | snippet email
26 | ${1:FIELDNAME} = models.EmailField(max_length=${2:75}${3:, blank=True})
27 | snippet file
28 | ${1:FIELDNAME} = models.FileField(upload_to=${2:path/for/upload}${3:, max_length=100})
29 | snippet filepath
30 | ${1:FIELDNAME} = models.FilePathField(path=${2:"/abs/path/to/dir"}${3:, max_length=100}${4:, match="*.ext"}${5:, recursive=True}${6:, blank=True, })
31 | snippet float
32 | ${1:FIELDNAME} = models.FloatField()
33 | snippet image
34 | ${1:FIELDNAME} = models.ImageField(upload_to=${2:path/for/upload}${3:, height_field=height, width_field=width}${4:, max_length=100})
35 | snippet int
36 | ${1:FIELDNAME} = models.IntegerField()
37 | snippet ip
38 | ${1:FIELDNAME} = models.IPAddressField()
39 | snippet nullbool
40 | ${1:FIELDNAME} = models.NullBooleanField()
41 | snippet posint
42 | ${1:FIELDNAME} = models.PositiveIntegerField()
43 | snippet possmallint
44 | ${1:FIELDNAME} = models.PositiveSmallIntegerField()
45 | snippet slug
46 | ${1:FIELDNAME} = models.SlugField(max_length=${2:50}${3:, blank=True})
47 | snippet smallint
48 | ${1:FIELDNAME} = models.SmallIntegerField()
49 | snippet text
50 | ${1:FIELDNAME} = models.TextField(${2:blank=True})
51 | snippet time
52 | ${1:FIELDNAME} = models.TimeField(${2:auto_now_add=True, auto_now=True}${3:, blank=True, null=True})
53 | snippet url
54 | ${1:FIELDNAME} = models.URLField(${2:verify_exists=False}${3:, max_length=200}${4:, blank=True})
55 | snippet xml
56 | ${1:FIELDNAME} = models.XMLField(schema_path=${2:None}${3:, blank=True})
57 | # Relational Fields
58 | snippet fk
59 | ${1:FIELDNAME} = models.ForeignKey(${2:OtherModel}${3:, related_name=''}${4:, limit_choices_to=}${5:, to_field=''})
60 | snippet m2m
61 | ${1:FIELDNAME} = models.ManyToManyField(${2:OtherModel}${3:, related_name=''}${4:, limit_choices_to=}${5:, symmetrical=False}${6:, through=''}${7:, db_table=''})
62 | snippet o2o
63 | ${1:FIELDNAME} = models.OneToOneField(${2:OtherModel}${3:, parent_link=True}${4:, related_name=''}${5:, limit_choices_to=}${6:, to_field=''})
64 |
65 | # Code Skeletons
66 |
67 | snippet form
68 | class ${1:FormName}(forms.Form):
69 | """${2:docstring}"""
70 | ${3}
71 |
72 | snippet model
73 | class ${1:ModelName}(models.Model):
74 | """${2:docstring}"""
75 | ${3}
76 |
77 | class Meta:
78 | ${4}
79 |
80 | def __unicode__(self):
81 | ${5}
82 |
83 | def save(self, force_insert=False, force_update=False):
84 | ${6}
85 |
86 | @models.permalink
87 | def get_absolute_url(self):
88 | return ('${7:view_or_url_name}' ${8})
89 |
90 | snippet modeladmin
91 | class ${1:ModelName}Admin(admin.ModelAdmin):
92 | ${2}
93 |
94 | admin.site.register($1, $1Admin)
95 |
96 | snippet r2r
97 | return render_to_response('${1:template.html}', {
98 | ${2}
99 | }${3:, context_instance=RequestContext(request)}
100 | )
101 |
102 | snippet tabularinline
103 | class ${1:ModelName}Inline(admin.TabularInline):
104 | model = $1
105 | extra = ${2:3}
106 |
107 | snippet stackedinline
108 | class ${1:ModelName}Inline(admin.StackedInline):
109 | model = $1
110 | extra = ${2:3}
111 |
112 |
--------------------------------------------------------------------------------