├── README └── snippets ├── django.snippets └── htmldjango.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/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 | -------------------------------------------------------------------------------- /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 | --------------------------------------------------------------------------------