рдорд▓реНрдЯреА-рдлрд╛рдЗрд▓ рдЕрдкрд▓реЛрдб, рд╕рдВрд╕реНрдХрд░рдг рдПрди

рдкреНрд░рд╛рдЪреАрди рдХрд╛рд▓ рд╕реЗ, рдЬрдм рдЗрдВрдЯрд░рдиреЗрдЯ рдпреБрд╡рд╛ рдФрд░ рдзреАрдорд╛ рдерд╛, рддреЛ рд╕рдмрд╕реЗ рдЖрдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ IE рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдореЛрдЬрд╝реЗрдХ, рд╡реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдирд╣реАрдВ рдЧрдП, рд▓реЗрдХрд┐рди рдбрд╛рдпрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ ... рдореБрдЭреЗ рдЕрдХреНрд╕рд░ рдЗрд╕ рд╕рд╡рд╛рд▓ рд╕реЗ рдкреАрдбрд╝рд╛ рд╣реЛрддреА рдереА - рдореИрдВ рдлрд╝рд╛рдЗрд▓ рд╕рдВрд╡рд╛рдж рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЪрдпрди рдХреНрдпреЛрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдХреНрдпреЛрдВ рдЕрдЧрд░ рдлрд╛рд░реНрдо рдореЗрдВ рддреАрди рдлрд╝рд╛рдЗрд▓ рдлрд╝реАрд▓реНрдб рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдкреНрд░рд╣рд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрд╕рдВрднрд╡ рд╣реИ?
рд╕рдордп рдмреАрддрдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рд╕реАрдЬреАрдЖрдИ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдлрд╝рд╛рдЗрд▓ рдлрд╝реАрд▓реНрдбреНрд╕ рдЕрднреА рднреА рд╕реНрд╡рд╛рд░реНрдереА рдереЗред рдлрд┐рд░ рдПрдХ рдлреНрд▓реИрд╢ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рдПрдЪрдЯреАрдПрдордПрд▓ 5, рд╕реНрдерд┐рддрд┐ рдмрджрд▓рдиреЗ рд▓рдЧреА, рд▓реЗрдХрд┐рди ... рдлрд╝рд╛рдЗрд▓ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдПрдХ рд╣реА рд╕рд╛рд░ рд╣реИ - рдлрд╝рд╛рдЗрд▓, рдлрд╝рд╛рдЗрд▓ рдПрд╕ рдирд╣реАрдВ ! рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрдИ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИрдВ ...

рддреЛ, рд╕рд╣рдХрд░реНрдорд┐рдпреЛрдВ, рдЖрдкрдиреЗ рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рд╣реИ, рдореИрдВ рдЖрдкрдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ "рдмрд╛рдЗрдХ" рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдФрд░ рдореБрдЭреЗ рдмреЗрд╣рдж рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рд╡рд╣ рдХрд┐рд╕реА рдХреА рдЬрд┐рдВрджрдЧреА рдХреЛ рдереЛрдбрд╝рд╛ рдЖрд╕рд╛рди рдмрдирд╛ рджреЗред рд▓реЗрдХрд┐рди рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЕрджреНрднреБрдд рдЙрдкрдХрд░рдг рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛, рдЬреИрд╕реЗ рдХрд┐ рдкреНрд▓реВрдк рд▓реЛрдб , рдПрдХ рдХреНрд░реЙрд╕ -рдмреЙрдмрд░ рдорд▓реНрдЯреА-рдлрд╛рдЗрд▓ рдкреНрд▓реЗрдпрд░ред

asv_files


рддреЛ, рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рдЬрд╛рдУ, asv_files рдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рдлрд╝реАрд▓реНрдб рд╣реИ (рдмрд╛рдж рдореЗрдВ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП), рдЬреЛ рдЖрдкрдХреЛ рдПрди рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рди рдХреЗрд╡рд▓ рдХреНрд╖реЗрддреНрд░, рдмрд▓реНрдХрд┐ рдХреБрдЫ рдмрд╛рдзреНрдпрдХрд╛рд░реА рднреА рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдорд╛рдиреНрдп рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рдФрд░ рдкреБрдирдГрдкреВрд░реНрддрд┐ рдХреЗ рд▓рд┐рдП рдорд░рдореНрдордд рдХреЗ рд▓рд┐рдП рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдФрд░ рдпрд╣ рднреА рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛ рдЖрдкрдХреЛ рдЗрди рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдХрдВрдЯреЗрдВрдЯрдЯреЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдХрд┐рд╕реА рднреА рдореЙрдбрд▓ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред

рдкреНрд▓реВрдкрд▓реЛрдб рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреНрд░реЙрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрдЧрддрддрд╛ рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдЙрди рдкрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред рдХрдо рд╕реЗ рдХрдо IE, Opere, FireFox рдФрд░ Chrome рдореЗрдВ, рдлрд╝реАрд▓реНрдб рдХреЛ рд╡реИрд╕рд╛ рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕рд╛ рдЙрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рд╕рд┐рджреНрдзрд╛рдВрдд


рдЗрд╕рд▓рд┐рдП, рдореБрдЦреНрдп рдЙрдкрдзрд╛рд░рдгрд╛ рдЬреЛ рдореБрдЭреЗ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдереА:

рд╕реНрдерд╛рдкрдирд╛


рд╕реНрдерд╛рдкрдирд╛ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдЕрджреНрднреБрдд рд╣реИ:
$ pip install asv_files 

рдЗрд╕реА рд╕рдордп, asv_files рдХреБрдЫ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд▓рд╛рдПрдЧрд╛, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ ( asv_media ) рдореЗрдВ jQuery рдФрд░ plupload рджреЛрдиреЛрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ staticfiles рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреЗрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред

рдлрд┐рд░ рдЖрдкрдХреЛ рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ asv_files, asv_media рдФрд░ django.contrib.sites рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
 INSTALLED_APPS = ( ..... 'django.contrib.sites', ..... 'asv_media', 'asv_files', ..... ) 

рдкреНрд░рдмрдВрдз рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╡рд╢реНрдпрдХ рдореЙрдбрд▓ рдмрдирд╛рдПрдВ:
 $ python manage.py syncdb 

рдФрд░ рдЕрджреГрд╢реНрдп рд╕рд╛рдордиреЗ рдЕрдиреБрд░реЛрдз рд╣реИрдВрдбрд▓рд░ рдХреЗ urls.py рд╕реЗрдирд╛рдирд┐рдпреЛрдВ рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░реЗрдВ:
 from django.conf.urls import patterns, include, url urlpatterns = patterns('', ..... url('AnY_YoUr_LiKe_PaTh/', include('asv_files.urls', namespace='asv_files')), ..... 

рдЖрдк рдХрд┐рд╕реА рднреА URL рдкрд░ RPC рдЙрддреНрддрд░рджрд╛рддрд╛ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдкрд░реЛрдХреНрдд рдирд╛рдо рд╕реНрдерд╛рди рдХреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


Django рдореЗрдВ рд░реВрдкреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд▓рдЧрднрдЧ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ рдЪрд╛рд╣реЗ рдЖрдк рдХреНрд▓рд╛рд╕рд┐рдХ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдпрд╛ рд╡рд░реНрдЧ-рдЖрдзрд╛рд░рд┐рдд рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВред рдиреАрдЪреЗ рдкрдВрдХреНрддрд┐ рд╣реИ:

рдлрд╝реЙрд░реНрдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ:
 from django import forms from asv_files.fields import CTfilesFormField class TestForm(forms.Form): #..... files = CTfilesFormField() #..... 

рдПрдХ рджреГрд╢реНрдп рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
 def TestView(request, ...): obj = Articles.objects.get(.........) if request.method == 'POST': form = TestForm(request.POST) if form.is_valid(): # ..... files = form.cleaned_data['files'] for i in files.get_files(): print('file {frn} saved as {fn} ({fp}) and have ID:{id}'.format( frn = i.get_realname(), fn = i.get_filename(), fp = i.get_filepath(), id = i.fileid, )) i.attach_to(obj) # attach to OBJ through ContentTypes #i.delete() # remove file from database and storage files.delete() # remove session and her files from database and storage else: form = TestForm() return render(request, 'template.html', { 'form': form, } 

рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдореАрдбрд┐рдпрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рднреВрд▓рдирд╛:
 {% extends "base.html" %} {% block add_to_head %} {{form.media}} {% endblock %} {% block wp %} <hr> <form method="POST" action="{% url demo:form1 %}">{% csrf_token %} <table>{{ form.as_table }}</table> <input type="submit"> <input type="reset"> </form> {% endblock %} 

add_to_head рдмреНрд▓реЙрдХ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдмреЗрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдореМрдЬреВрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдкреНрд░рдмрдВрдзрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рдмрдВрдзрди


Management.py рдореЗрдВ, рдЕрдкрд▓реЛрдб рдХрдорд╛рдВрдб рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдбрд╛рдЙрдирд▓реЛрдб рд╕рддреНрд░ рдФрд░ рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓реЗрдВ (рдЬреЛ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХреА рдЧрдИ рдереАрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рдкрддреНрд░ рд╕рдмрдорд┐рдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╛ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдкреНрд░рдкрддреНрд░ рд╕рдмрдорд┐рдЯ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛рдирд╛ рднреВрд▓ рдЧрдпрд╛):
 $ ./manage.py uploads --help Usage: ./manage.py uploads [options] <sess_ID or filename> Managament for upload files and sessions Options: --sessions list unclosed upload sessions and it's files, if exist --realname display real (user's) file name near file name --no-files, --nofiles do not display information about files --older=XX use only sessions older than XX hours --only-uuids, --onlyuuids show only session's UUIDs --remove remove upload session and her files 

рддреЛ, рджреЛ рдореБрдЦреНрдп рдЖрджреЗрд╢ рд╣реИрдВ:
 $ ./manage.py uploads --sessions 
рдФрд░
 $ ./manage.py uploads --remove sessID-1 sessID-2 ... sessID-N 

рдкрд╣рд▓рд╛ рдЕрдзреВрд░рд╛ рдбрд╛рдЙрдирд▓реЛрдб рд╕рддреНрд░, рдЙрдирдХреА рдлрд╛рдЗрд▓реЗрдВ рдФрд░ рдЕрдиреНрдп рд╕рдВрдмрдВрдзрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рджрд┐рдЦрд╛рддрд╛ рд╣реИред
рджреВрд╕рд░рд╛ рд╕реВрдЪреАрдмрджреНрдз рд╕реВрдЪреАрдмрджреНрдз рд╕рддреНрд░ рдФрд░ рдбреАрдмреА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред

рдЕрдкрд▓реЛрдб рдХреА рдХреБрдВрдЬреА - рд╕рддреНрд░ рдХрдорд╛рдВрдб:


рдФрд░ рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ, рдореИрдВ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ ...


Asv_files рдХреЗ рд╕реНрд░реЛрдд рдпрд╣рд╛рдВ рд╣реИрдВ ред
рджрд╕реНрддрд╛рд╡реЗрдЬ, рд▓рд┐рдЦрд┐рдд, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдЬрд▓реНрджреА рдореЗрдВ - рдкрд╛рд╕ рд╣реИ ред
рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдбреЗрдореЛ (рд╕реАрдмреАрд╡реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рдорд╣рд╛рджреНрд╡реАрдк рдХреЗ рд╡рд┐рдкрд░реАрдд рдЫреЛрд░ рдкрд░ - рдкрд╛рд╕ рдХреЗ рджреЛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдХрд╛рдо рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ ред
рдФрд░ рднрдпрд╛рдирдХ CBV рдкреНрд░рд▓реЗрдЦрди рдХрд░реАрдм рд╣реИ рдЬрд┐рддрдирд╛ рдЖрдк рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ ...

рдореИрдВ рдЦрд╝реБрд╢реА рд╕реЗ рдЖрд▓реЛрдЪрдирд╛, рдмрдЧ рдлрд┐рдХреНрд╕, рд╕реБрдЭрд╛рд╡ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реВрдВрдЧрд╛ред
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

UPD: рдУрдкреЗрд░рд╛ рддрдп рд╣реЛ рдЧрдпрд╛ рд╣реИ, рд╕рдлрд╛рд░реА рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди html4 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╛рдЗрд▓-рдмрд╛рдп-рдлрд╛рдЗрд▓ рдЬреЛрдбрд╝рддрд╛ рд╣реИ

рд╕рдорд░реНрдерд┐рдд рдмреНрд░рд╛рдЙрдЬрд╝рд░: InternetExplorer 7+, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕, рдХреНрд░реЛрдо, рдУрдкреЗрд░рд╛, рд╕рдлрд╛рд░реА

Source: https://habr.com/ru/post/In144052/


All Articles