ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Webim Π² E-mail
Π Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ Π²Π½Π΅Π΄ΡΠΈΠΌ ΠΊΠ½ΠΎΠΏΠΊΡ ΡΠ΅ΡΠ²ΠΈΡΠ° Webim Π² ΠΠ°ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ ΡΠΎΡΠΌΠ°ΡΠ° HTML. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ ΠΏΠΈΡΡΠΌΠ° ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΡΠ°ΡΡ Ρ ΠΠ°ΡΠΈΠΌ ΠΊΠΎΠ½ΡΡΠ»ΡΡΠ°Π½ΡΠΎΠΌ.
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Webim
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Webim Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π·Π°ΠΏΡΠΎΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π²ΠΈΠ΄Π°:
https://{account_name}.webim.ru/webim/button.php?button-name=baloon_blue.gif&force-status=on
ΠΠ΄Π΅ account_name
β Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΠ°ΡΠ΅Π³ΠΎ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ° Webim.
ΠΡΠ»ΠΈ ΠΠ°Ρ Π°ΠΊΠΊΠ°ΡΠ½Ρ ΡΠ°Π·ΠΌΠ΅ΡΡΠ½ Π½Π΅ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ Webim, Π·Π°ΠΏΡΠΎΡ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΈΠ΄:
https://chat.mycompany.com/webim/button.php?button-name=baloon_blue.gif&force-status=on
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π·Π°ΠΏΡΠΎΡΠ° /webim/button.php:
ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|
button-name | ΠΠΌΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΡΠΊΡΡΡΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΏΠΎΡΡΠΎΠ²ΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅. |
force-status | ΠΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΡΡΠ°ΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ. ΠΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° 'force-status=on' , ΡΠΎ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΠ° ΡΡΠ°ΡΡΡΠ° ΠΠ½Π»Π°ΠΉΠ½. ΠΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° 'force-status=off' , ΡΠΎ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΠ° ΡΡΠ°ΡΡΡΠ° ΠΡΠ»Π°ΠΉΠ½. ΠΡΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π½Π΅ ΡΠΊΠ°Π·Π°Π½, ΡΡΠ°ΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π±ΡΠ΄Π΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ Π½Π°Π»ΠΈΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΠ½Π»Π°ΠΉΠ½:
|
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π½Π° ΡΡΠ°ΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π΅ Π²Π»ΠΈΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΎΡΠ»Π°ΠΉΠ½-ΠΊΠ½ΠΎΠΏΠΊΡ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΠΊΠ½ΠΎΠΏΠΊΠΈ. ΠΡΠ»Π°ΠΉΠ½-ΠΊΠ½ΠΎΠΏΠΊΠ° Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°.
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ Webim
ΠΠΌΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ | ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΊΠ½ΠΎΠΏΠΊΠΈ | ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡΠ»Π°ΠΉΠ½-ΠΊΠ½ΠΎΠΏΠΊΠΈ |
---|---|---|
baloon_mini_blue. gif | ||
baloon_mini_green.gif | ||
circle2_blue.gif | ||
circle2_green.gif | ||
circle_blue.gif | ||
circle_green.gif | ||
square_cyan.gif | ||
square_green.gif | ||
oval_blue.gif | ||
oval_green.gif | ||
oval_blue_l.gif | ||
oval_green_l.gif | ||
oval_blue_r.gif | ||
oval_green_r.gif | ||
baloon_blue.gif | ||
baloon_green. gif | ||
foval_cyan.gif | ||
foval_purple.gif |
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π·Π°Π²ΠΈΡΡΡΠ΅Π΅ ΠΎΡ Π½Π°Π»ΠΈΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Β«ΠΎΠ½Π»Π°ΠΉΠ½Β».
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Webim Π΄Π»Ρ ΠΎΡΠΊΡΡΡΠΈΡ ΡΠ°ΡΠ° ΠΈΠ· ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ
Π ΠΠ°ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ ΡΠΎΡΠΌΠ°ΡΠ° HTML Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
<a href="https://{account_name}.webim.ru/webim/client.php"> <img src="https://{account_name}.webim.ru/webim/button.php?button-name=baloon_blue.gif&force-status=on" /> </a>
ΠΠ΄Π΅
account_name
β Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΠ°ΡΠ΅Π³ΠΎ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ° Webim.ΠΡΠΈΠΌΠ΅Ρ Π³ΠΎΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ:
<h2>ΠΠΎΡ ΠΏΠΈΡΡΠΌΠΎ ΡΠΎΡΠΌΠ°ΡΠ° HTML</h2><pre> Π£ ΠΠ°Ρ ΠΎΡΡΠ°Π»ΠΈΡΡ Π²ΠΎΠΏΡΠΎΡΡ? <a href="https://webim.webim.ru/webim/client.php"> <img src="https://webim. webim.ru/webim/button.php?button-name=baloon_blue.gif&force-status=on" /> </a>
ΠΡΠΏΡΠ°Π²ΡΡΠ΅ ΠΠ°ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠΉ Π²Π°ΠΌ ΡΠΏΠΎΡΠΎΠ±.
ΠΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Webim
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ Π»ΡΠ±ΡΡ ΡΠ΄ΠΎΠ±Π½ΡΡ ΠΠ°ΠΌ ΡΡΡΠ»ΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΡΠ°Ρ ΠΎΠ½Π»Π°ΠΉΠ½ ΠΊΠΎΠ½ΡΡΠ»ΡΡΠ°Π½ΡΠ° Webim. ΠΠ»Ρ ΡΠ°ΠΊΠΎΠΉ ΡΡΡΠ»ΠΊΠΈ ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΠΈΠ±ΠΎ ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΠ°Ρ ΡΠ°Ρ.
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΠ°Ρ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π² Π°ΡΡΠΈΠ±ΡΡ href ΠΠ°ΡΠ΅ΠΉ ΡΡΡΠ»ΠΊΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ URL-Π°Π΄ΡΠ΅Ρ, ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΊ ΠΠ°ΡΠ΅ΠΌΡ ΡΠ°ΡΡ:
https://{account_name}.webim.ru/webim/client.php
ΠΠ΄Π΅
account_name
β Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΠ°ΡΠ΅Π³ΠΎ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ° Webim.ΠΡΠ»ΠΈ ΠΠ°Ρ Π°ΠΊΠΊΠ°ΡΠ½Ρ ΡΠ°Π·ΠΌΠ΅ΡΡΠ½ Π½Π΅ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ Webim, ΡΡΡΠ»ΠΊΠ° Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΈΠ΄:
https://chat.mycompany. com/webim/client.php
ΠΡΠΈΠΌΠ΅Ρ Π³ΠΎΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ ΡΠΎΡΠΌΠ°ΡΠ° HTML Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΉ ΡΡΡΠ»ΠΊΠΈ:
<h2>ΠΠΎΡ ΠΏΠΈΡΡΠΌΠΎ ΡΠΎΡΠΌΠ°ΡΠ° HTML</h2><pre> Π£ ΠΠ°Ρ ΠΎΡΡΠ°Π»ΠΈΡΡ Π²ΠΎΠΏΡΠΎΡΡ? <a href="https://webim.webim.ru/webim/client.php"> ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ Π½Π°ΠΌ! </a>
ΠΡΠΏΡΠ°Π²ΡΡΠ΅ ΠΠ°ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠΉ Π²Π°ΠΌ ΡΠΏΠΎΡΠΎΠ±.
ΠΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
ΠΠ°ΠΆΠ½ΠΎ
ΠΡΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π΅ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΊΡΡΡ ΡΠ°Ρ ΠΎΠ½Π»Π°ΠΉΠ½ ΠΊΠΎΠ½ΡΡΠ»ΡΡΠ°Π½ΡΠ° Webim Π½Π° Π²Π΅ΡΡ ΡΠΊΡΠ°Π½.
ΠΡΠΈΠΌΠ΅Ρ ΡΠ°ΡΠ°, ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΡΠ°ΡΡ ΠΎΠ½Π»Π°ΠΉΠ½ ΠΊΠΎΠ½ΡΡΠ»ΡΡΠ°Π½ΡΠ° Webim ΠΏΡΡΠΌΠΎ ΠΈΠ· ΠΏΠΈΡΡΠΌΠ°!
ΠΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² Django Admin
Spread the love
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Β«ΡΠΏΠ°ΡΠ³Π°Π»ΠΊΠ΅Β» ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Django Admin. Π ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΎΠ΄Π½ΠΎ ΠΊΠ½ΠΎΠΏΠΊΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ ΡΠΏΠΈΡΠΊΠ° Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ β list view. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΈΠΌΠΏΠΎΡΡΠ° ΡΠ΅Π³ΠΎ Π»ΠΈΠ±ΠΎ. ΠΠΎ Π²ΡΠΎΡΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ (actions) Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΠΎΡΠΌΠ°ΠΌΠΈ.
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ Π² ΡΠΏΠΈΡΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊΠ°ΠΊΠΎΠΉ Π½ΠΈΠ±ΡΠ΄Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΈΠΌΠΏΠΎΡΡΠ° Π΄Π°Π½Π½ΡΡ . ΠΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΈΠΌΠΏΠΎΡΡ Π΄Π°Π½Π½ΡΡ .
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π²Π½Π΅ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ» admin.py ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½ Π°Π΄ΠΌΠΈΠ½ΠΊΠΈ Π΄Π»Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ.
ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΡΠ°ΠΉΠ»Π° ΡΠ°Π±Π»ΠΎΠ½Π°. ΠΠ°Ρ ΡΠ°Π±Π»ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌ ΡΠ°Π±Π»ΠΎΠ½Π΅, ΠΌΡ ΠΏΡΠΎΡΡΠΎ Π²Π½Π΅ΡΠ΅ΠΌ Π² Π½Π΅Π³ΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅. Π ΠΏΠ°ΠΏΠΊΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ: xxx/templates/admin/model_change_list.html.
Π ΡΡΠΎΡ ΡΠ°Π±Π»ΠΎΠ½ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
{% extends 'admin/change_list. html' %} {% block object-tools %} <form action="import/" method="POST"> {% csrf_token %} <input type="submit" value="ΠΠΌΠΏΠΎΡΡ" /> </form> {{ block.super }} {% endblock %}
Π ΡΠ°ΠΉΠ»Π΅ admin.py Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° ΡΠ°ΠΉΠ» ΡΡΠΎΡ ΡΠ°Π±Π»ΠΎΠ½. ΠΠΎΠ±Π°Π²ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ URL get_urls. Π Π½Π΅Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΌΠ°ΡΡΡΡΡ ΠΈΠΌΠΏΠΎΡΡΠ° Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠΌΠΏΠΎΡΡΠ°. Π Π΄Π°Π»Π΅Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ°ΠΌΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΈΠΌΠΏΠΎΡΡΠ°:
from django.contrib import admin from django.http import HttpResponseRedirect from django.conf.urls import url from monitor.models import LoginMonitor from monitor.import_custom import ImportCustom @admin.register(LoginMonitor)<br> class LoginMonitorAdmin(admin.ModelAdmin):<br> change_list_template = "admin/monitor_change_list.html" def get_urls(self): urls = super(LoginMonitorAdmin, self).import/$', self.process_import, name='process_import'),] return custom_urls + urls def process_import_btmp(self, request): import_custom = ImportCustom() count = import_custom.import_data() self.message_user(request, f"ΡΠΎΠ·Π΄Π°Π½ΠΎ {count} Π½ΠΎΠ²ΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ") return HttpResponseRedirect("../")
ΠΡΠ΅, Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ.
ΠΠ°Π»Π΅Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΠ°ΡΠΎΠΉ, Π½ΠΎ Π²ΡΠ΅ Π΅ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ°ΡΡΠΈ: Haki Benita β How to Add Custom Action Buttons to Django Admin
Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΠΏΠΎΡΡΠ΅ ΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ»ΠΈ ΡΠ°Π±Π»ΠΎΠ½, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π² Π½Π°ΡΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΡΡ Django. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π±Π°Π½ΠΊΠΎΠ²ΡΠΊΠΎΠ³ΠΎ ΡΡΠ΅ΡΠ° Ρ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ Action ΠΈ Action, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ, ΠΊΠ°ΠΊ ΠΌΡ ΡΠ΅ΡΠ°Π΅ΠΌ ΠΎΠ±ΡΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°. Π£ Π±Π°Π½ΠΊΠΎΠ²ΡΠΊΠΎΠ³ΠΎ ΡΡΠ΅ΡΠ° Π±ΡΠ»ΠΎ Π΄Π²Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Ρ ΠΎΡΠ΅Π»ΠΈ Π²ΡΡΡΠ°Π²ΠΈΡΡ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° β deposit (Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½Π° ΡΡΠ΅Ρ) ΠΈ withdraw (ΡΠ½ΡΡΠΈΠ΅ ΡΠΎ ΡΡΠ΅ΡΠ°).
ΠΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° Django Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° ΠΈ Π²ΡΠ²ΠΎΠ΄Π° Π΄Π΅Π½Π΅Π³ ΡΠΎ ΡΡΠ΅ΡΠ°, ΠΈ ΠΌΡ ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΡΡΠΎ ΠΌΠ΅Π½Π΅Π΅ ΡΠ΅ΠΌ Π·Π° 100 ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°!
ΠΠ°ΠΊ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ Π² ΠΊΠΎΠ½ΡΠ΅?
Django Admin interface with custom action buttonsΠΡΡΠΎΡΠ½ΠΈΠΊ: https://hakibenita. com/images/01-how-to-add-custom-action-buttons-to-django-admin.png
ΠΠΎΡΠ΅ΠΌΡ Π±Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ action Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°?
ΠΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ action Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π½Π°Π±ΠΎΡΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠΎΠ² queryset. ΠΠ½ΠΈ ΡΠΊΡΡΡΡ Π² Π²ΡΠΏΠ°Π΄Π°ΡΡΠ΅ΠΌ ΠΌΠ΅Π½Ρ Π½Π° Π²Π΅ΡΡ Π½Π΅ΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΏΠΎΠ»Π΅Π·Π½Ρ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. Π₯ΠΎΡΠΎΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΡ ΠΎΡΠΌΠ΅ΡΠ°Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ ΠΈ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΠ΅ Β«ΡΠ΄Π°Π»ΠΈΡΡ ΡΡΡΠΎΠΊΠΈΒ» ΠΈΠ· Π²ΡΠΏΠ°Π΄Π°ΡΡΠ΅Π³ΠΎ ΠΌΠ΅Π½Ρ. ΠΡΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ ΠΈ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°Π΅Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
Django built in actionsΠΡΡΠΎΡΠ½ΠΈΠΊ: https://hakibenita.com/images/02-how-to-add-custom-action-buttons-to-django-admin.png
ΠΡΡΠ³ΠΈΠΌ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½Π΅ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π² detail view. Π§ΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠΉ Π²ΠΈΠ΄, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ°Π±Π»ΠΎΠ½.
Π€ΠΎΡΠΌΡ
ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ, Π½Π°ΠΌ Π½ΡΠΆΠ½Π° ΡΠΎΡΠΌΠ°. ΠΠ°ΠΌ Π½ΡΠΆΠ½Π° ΠΎΠ΄Π½Π° ΡΠΎΡΠΌΠ° Π΄Π»Ρ deposit ΠΈ ΠΎΠ΄Π½Π° ΡΠΎΡΠΌΠ° Π΄Π»Ρ withdraw.
Π Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΎΠΏΡΠΈΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΠ΅ Π²Π»Π°Π΄Π΅Π»ΡΡΡ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ, ΡΠΎΠΎΠ±ΡΠ°Ρ Π΅ΠΌΡ ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ, Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΌ Π² Π΅Π³ΠΎ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ.
ΠΡΠ΅ Π½Π°ΡΠΈ actions ΠΈΠΌΠ΅ΡΡ ΠΎΠ±ΡΠΈΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ comment ΠΈ send_email. Actions ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΡΠΏΠ΅Ρ ΠΈ Π½Π΅ΡΠ΄Π°ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½Π΅ΠΌ Ρ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΡΠΎΡΠΌΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠ±ΡΠ΅Π³ΠΎ action:
# forms.py from django import forms from common.utils import send_email from . import errors class AccountActionForm(forms.Form): comment = forms.CharField( required=False, widget=forms.Textarea, ) send_email = forms. BooleanField( required=False, ) @property def email_subject_template(self): return 'email/account/notification_subject.txt' @property def email_body_template(self): raise NotImplementedError() def form_action(self, account, user): raise NotImplementedError() def save(self, account, user): try: account, action = self.form_action(account, user) except errors.Error as e: error_message = str(e) self.add_error(None, error_message) raise if self.cleaned_data.get('send_email', False): send_email( to=[account.user.email], subject_template=self.email_subject_template, body_template=self.email_body_template, context={ "account": account, "action": action, } ) return account, action ο»Ώ
- ΠΠ°ΠΆΠ΄ΠΎΠ΅ action ΠΈΠΌΠ΅Π΅Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ comment ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ.
- Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠΈ ΡΠΎΡΠΌΡ. ΠΡΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° ΡΠΎ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ModelForm.
- Π ΡΠ΅Π»ΡΡ Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΆΡΡΠ½Π°Π»Π° ΠΈ Π°ΡΠ΄ΠΈΡΠ° Π²ΡΠ·ΡΠ²Π°ΡΡΠ°Ρ ΡΡΠΎΡΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ΅Π³ΠΎ action.
- ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΌΠΈ ΡΠΎΡΠΌΠ°ΠΌΠΈ, Π²ΡΠ·ΠΎΠ²ΡΡ NotImplementedError. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅ΠΌ, ΡΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΠΎΠ»ΡΡΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π·Π°Π±ΡΠ΄Π΅Ρ ΡΡΠΎ-ΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ.
- ΠΡΠΈΠ±ΠΊΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ. ΠΠ°ΡΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠΈΡΡ Π²ΡΠ΅ (ΠΈ ΡΠΎΠ»ΡΠΊΠΎ) ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π°ΠΊΠΊΠ°ΡΠ½ΡΠΎΠΌ, ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΏΡΠΎΡΡΠΎΠΉ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ, Π΄Π°Π²Π°ΠΉΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠΎΡΠΌΡ Π΄Π»Ρ withdraw. ΠΠ»Ρ withdraw Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠΎΠ»Π΅ ΡΡΠΌΠΌΡ:
# forms. py from django.utils import timezone from .models import Account, Action class WithdrawForm(AccountActionForm): amount = forms.IntegerField( min_value=Account.MIN_WITHDRAW, max_value=Account.MAX_WITHDRAW, required=True, help_text='How much to withdraw?', ) email_body_template = 'email/account/withdraw.txt' field_order = ( 'amount', 'comment', 'send_email', ) def form_action(self, account, user): return Account.withdraw( id=account.pk, user=account.user, amount=self.cleaned_data['amount'], withdrawn_by=user, comment=self.cleaned_data['comment'], asof=timezone.now(), ) ο»Ώ
- ΠΡ ΡΠ°ΡΡΠΈΡΠΈΠ»ΠΈ Π±Π°Π·Ρ AccountActionForm ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π΅ amount Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΠΌΠΈ.
- ΠΡ Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ, email_body_template.
- ΠΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ action ΡΠΎΡΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ classmethod ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ°. ΠΠΎΠ΄Π΅Π»Ρ Π·Π°Π±ΠΎΡΠΈΡΡΡ ΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ΅ Π·Π°ΠΏΠΈΡΠΈ, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π»ΡΠ±ΡΡ Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌΡΡ ΠΏΠΎΠ»Π΅ΠΉ ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π² ΠΆΡΡΠ½Π°Π».
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ°Π³ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ deposit. ΠΠ»Ρ deposit ΡΡΠ΅Π±ΡΡΡΡΡ ΠΏΠΎΠ»Ρ amount, reference ΠΈ reference_type:
# forms.py class DepositForm(AccountActionForm): amount = forms.IntegerField( min_value=Account.MIN_DEPOSIT, max_value=Account.MAX_DEPOSIT, required=True, help_text='How much to deposit?', ) reference_type = forms.ChoiceField( required=True, choices=Action.REFERENCE_TYPE_CHOICES, ) reference = forms.CharField( required=False, ) email_body_template = 'email/account/deposit.txt' field_order = ( 'amount', 'reference_type', 'reference', 'comment', 'send_email', ) def form_action(self, account, user): return Account. deposit( id=account.pk, user=account.user, amount=self.cleaned_data['amount'], deposited_by=user, reference=self.cleaned_data['reference'], reference_type=self.cleaned_data['reference_type'], comment=self.cleaned_data['comment'], asof=timezone.now(), ) ο»Ώ
ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠΎΡΠΌΡ Π΄Π»Ρ ΠΏΡΠΈΠ½ΡΡΠΈΡ, ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΈ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ deposit ΠΈ withdraw. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ°Π³ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π³ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π² ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° Django.
Admin
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π΄Π»Ρ actions, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ Π±Π°Π·ΠΎΠ²ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° Π΄Π»Ρ Π½Π°ΡΠ΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Account:
# admin.py from django.contrib import admin from . models import Account @admin.register(Account) class AccountAdmin(admin.ModelAdmin): date_heirarchy = ( 'modified', ) list_display = ( 'id', 'user', 'modified', 'balance', 'account_actions', ) readonly_fields = ( 'id', 'user', 'modified', 'balance', 'account_actions', ) list_select_related = ( 'user', ) def account_actions(self, obj): # TODO: Render action buttons ο»Ώ
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΡΠΌΠΎΡΡ ΡΠΏΠΈΡΠΊΠ° Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡΡΡΠ΅, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΡΡΡΠ»ΠΊΡ Π½Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ actions ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»Π΅ΠΉ ΠΏΠΎΠΈΡΠΊΠ° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅. Π Π°Π½Π΅Π΅ Ρ ΠΏΠΈΡΠ°Π» ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΠΏΡΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Django Π΄Π»Ρ ΡΠΎΡΠ΅Π½ ΡΡΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. Π’Π°ΠΌ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΡΡΠ½ΡΡ ΡΡΡΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π΄Π°ΠΆΠ΅ ΡΡΠΎΡ ΠΏΡΠΎΡΡΠΎΠΉ Π²ΠΈΠ΄ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΡΡΠ½Π΅Π΅.
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ Action
ΠΡ Ρ ΠΎΡΠΈΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ action Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΡΡΡΠ»Π°Π»ΠΈΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ Ρ ΡΠΎΡΠΌΠΎΠΉ. (?P<account_id>.+)/withdraw/$’, self.admin_site.admin_view(self.process_withdraw), name=’account-withdraw’, ), ] return custom_urls + urls def account_actions(self, obj): return format_html( ‘<a href=»{}»>Deposit</a>Β ‘ ‘<a href=»{}»>Withdraw</a>’, reverse(‘admin:account-deposit’, args=[obj.pk]), reverse(‘admin:account-withdraw’, args=[obj.pk]), ) account_actions.short_description = ‘Account Actions’ account_actions.allow_tags = True def process_deposit(self): # TODO def process_withdraw(self): # TODO ο»Ώ
- ΠΡ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ Π΄Π²Π° URL, ΠΎΠ΄ΠΈΠ½ Π΄Π»Ρ deposit ΠΈ ΠΎΠ΄ΠΈΠ½ Π΄Π»Ρ withdraw.
- ΠΡ ΡΠΎΡΠ»Π°Π»ΠΈΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠ°ΡΡΡΡΡ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ process_deposit ΠΈ process_withdraw. ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡΠΎΠ±ΡΠ°Π·ΡΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΠΎΡΠΌΠΎΠΉ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ.
- ΠΡ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎΠ΅ ΠΏΠΎΠ»Π΅ account_actions, ΡΡΠΎΠ±Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Β«ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎΒ» ΠΏΠΎΠ»Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°, ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ account_actions, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΠΊΠ°ΠΊ Π² ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΡΡ (detail view), ΡΠ°ΠΊ ΠΈ Π² Π²ΠΈΠ΄Π΅ ΡΠΏΠΈΡΠΊΠ° (list view).
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ actions:
# admin.py from django.http import HttpResponseRedirect from django.template.response import TemplateResponse from .forms import DepositForm, WithdrawForm class AccountAdmin(admin.ModelAdmin): # ... def process_deposit(self, request, account_id, *args, **kwargs): return self.process_action( request=request, account_id=account_id, action_form=DepositForm, action_title='Deposit', ) def process_withdraw(self, request, account_id, *args, **kwargs): return self. process_action( request=request, account_id=account_id, action_form=WithdrawForm, action_title='Withdraw', ) def process_action( self, request, account_id, action_form, action_title ): account = self.get_object(request, account_id) if request.method != 'POST': form = action_form() else: form = action_form(request.POST) if form.is_valid(): try: form.save(account, request.user) except errors.Error as e: # If save() raised, the form will a have a non # field error containing an informative message. pass else: self.message_user(request, 'Success') url = reverse( 'admin:account_account_change', args=[account.pk], current_app=self. admin_site.name, ) return HttpResponseRedirect(url) context = self.admin_site.each_context(request) context['opts'] = self.model._meta context['form'] = form context['account'] = account context['title'] = action_title return TemplateResponse( request, 'admin/account/account_action.html', context, ) ο»Ώ
Deposit ΠΈ withdraw ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. Π§ΡΠΎΠ±Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠ±Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΡΠΎΡΠΌΡ Π½Π° ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡ ΡΠΎΡΠΌΡ.
process_action ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΡ ΡΠΎΡΠΌΡ Π΄Π»Ρ ΠΎΠ±ΠΎΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ. Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΎΡΠΌΡ, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ. process_withdraw ΠΈ process_deposit, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
ΠΠ»Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π½Π°ΠΌ Π½ΡΠΆΠ΅Π½ template Π΄Π»Ρ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΡΠΌΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°ΡΡ Π½Π°Ρ ΡΠ°Π±Π»ΠΎΠ½ Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΌ ΡΠ°Π±Π»ΠΎΠ½Π΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΌ Django Admin:
<!-- templates/admin/account/account_action.html --> {% extends "admin/change_form.html" %} {% load i18n admin_static admin_modify %} {% block content %} <div> <form action="" method="POST"> {% csrf_token %} {% if form.non_field_errors|length > 0 %} <p> "Please correct the errors below." </p> {{ form.non_field_errors }} {% endif %} <fieldset> {% for field in form %} <div> {{ field.errors }} {{ field.label_tag }} {{ field }} {% if field.field.help_text %} <p> {{ field.field.help_text|safe }} </p> {% endif %} </div> {% endfor %} </fieldset> <div> <input type="submit" value="Submit"> </div> </form> </div> {% endblock %} ο»Ώ
Π ΡΡΠΎ Π²ΡΠ΅!
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΡΠΈ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π»Π΅Π³ΠΊΠΎ Π²Π½ΠΎΡΠΈΡΡ ΠΈ ΡΠ½ΠΈΠΌΠ°ΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΏΡΡΠΌΠΎ ΠΈΠ· ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°. ΠΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΄ΠΎΡΠΎΠ³ΡΡ ΠΏΠ°Π½Π΅Π»Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ².
Π― ΠΎΠ±Π΅ΡΠ°Π», ΡΡΠΎ ΠΌΡ ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΡΡΠΎ Π² 100 ΡΡΡΠΎΠΊ, ΠΈ ΠΌΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΡΠΎ Π·Π° ΠΌΠ΅Π½ΡΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ!
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²Π·ΡΡΠ° ΠΈΠ· ΠΏΡΠ΅Π²ΠΎΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ (ΠΏΡΠ΅Π²ΠΎΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ!) ΠΠ°ΠΊΠ΅ΡΠ° django-import-export. ΠΡΠΎ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΠ»ΠΎ Π½Π°ΠΌ ΡΠ°ΡΡ Β«ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΠΌΠ½Π΅ Π΄Π°Π½Π½ΡΠ΅ Π² Excel?Β» ΠΈ ΠΌΡ Π»ΡΠ±ΠΈΠΌ ΡΡΠΎ Π·Π° ΡΡΠΎ. ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ ΡΡΠΈΠΌ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΠΎ.
ΠΡΠ»Π° Π»ΠΈ Π²Π°ΠΌ ΠΏΠΎΠ»Π΅Π·Π½Π° ΡΡΠ° ΡΡΠ°ΡΡΡ?
[8 / 1.9]
Spread the love
ΠΠ½ΠΎΠΏΠΊΠ°HTML: ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ | Career Karma
HTML-ΡΠ΅Π³ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² HTML-ΡΠΎΡΠΌΠ΅. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΡΠΎΡΠΌΠ΅ Π½Π° Π²Π΅Π±-ΡΠ°ΠΉΡ. Π‘ΡΠΈΠ»Ρ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ CSS.
ΠΠΎΠ³Π΄Π° Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ ΡΠΎΡΠΌΡ Π½Π° Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ΅, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠ³ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠΎΡΠΌΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π²Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΡΠΌΠ° Π·Π°ΠΊΠ°Π·Π° Π½Π° ΡΠ°ΠΉΡΠ΅ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π΄ΠΎΡΡΠ°Π²ΠΊΠ΅ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ» ΡΠΎΡΠΌΡ, Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΠ°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΆΠ°ΡΡ, ΡΡΠΎΠ±Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠ²ΠΎΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΉ ΡΡΠ΅Π±Π½ΡΠΉ Π»Π°Π³Π΅ΡΡ
- Career Karma ΠΏΠΎΠ΄Π±Π΅ΡΠ΅Ρ Π΄Π»Ρ Π²Π°Ρ Π»ΡΡΡΠΈΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ΅Π±Π½ΡΠ΅ ΠΊΡΡΡΡ
- ΠΠΎΡΡΡΠΏ ΠΊ ΡΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΡΠΌ ΡΡΠΈΠΏΠ΅Π½Π΄ΠΈΡΠΌ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΊΡΡΡΠ°ΠΌ
ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΠΉ Π²Π°Ρ Π²ΠΎΠΏΡΠΎΡ
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡΠΠΈΠ·Π°ΠΉΠ½ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ Π°Π½Π°Π»ΠΈΠ· Π΄Π°Π½Π½ΡΡ
ΠΠ½Π°Π»ΠΈΡΠΈΠΊΠ° Π΄Π°Π½Π½ΡΡ
UX-Π΄ΠΈΠ·Π°ΠΉΠ½ΠΠΈΠ±Π΅ΡΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΠΠΌΡ
Π€Π°ΠΌΠΈΠ»ΠΈΡ
ΠΠ»Π΅ΠΊΡΡΠΎΠ½Π½Π°Ρ ΠΏΠΎΡΡΠ°
ΠΠΎΠΌΠ΅Ρ ΡΠ΅Π»Π΅ΡΠΎΠ½Π°
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ, Π²Ρ ΡΠΎΠ³Π»Π°ΡΠ°Π΅ΡΠ΅ΡΡ Ρ Π½Π°ΡΠΈΠΌΠΈ Π£ΡΠ»ΠΎΠ²ΠΈΡΠΌΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΈ ΠΠΎΠ»ΠΈΡΠΈΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΡΡΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ³Π»Π°ΡΠ°Π΅ΡΠ΅ΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΡ Career Karma ΠΏΠΎ ΡΠ΅Π»Π΅ΡΠΎΠ½Ρ, ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌ ΠΈ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΠ΅.
ΠΠΎΡ ΡΡΡ-ΡΠΎ ΠΈ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π³ HTML
. Π’Π΅Π³ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² HTML Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² HTML-ΡΠΎΡΠΌΠ΅ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΡΠΎΡΠΌΠ΅ Π½Π° Π²Π΅Π±-ΡΠ°ΠΉΡ.
Π ΡΡΠΎΠΌ ΡΡΠΎΠΊΠ΅ ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅Π³
Π² HTML
. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ Π°ΡΡΠΈΠ±ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΡΠΈΡ
Π°ΡΡΠΈΠ±ΡΡΠΎΠ² Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ.
ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ HTML-ΡΠΎΡΠΌ
HTML
Π€ΠΎΡΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠ±ΠΎΡΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΡΠΈΠΏΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π°, Π½ΠΎΠΌΠ΅ΡΠ° ΡΠ΅Π»Π΅ΡΠΎΠ½ΠΎΠ² ΠΈΠ»ΠΈ Π°Π΄ΡΠ΅ΡΠ° Π½Π° Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ΅.
ΠΠ°ΠΆΠ΄Π°Ρ ΡΠΎΡΠΌΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π²Π²ΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π½Π° Π²Π΅Π±-ΡΠ°ΠΉΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΡΠΌΠ° Π·Π°ΠΊΠ°Π·Π°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ°Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΎΡΠΌΡ Π΄Π»Ρ ΡΠ±ΠΎΡΠ° ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π΄Π°ΡΡ ΡΠΎΠΆΠ΄Π΅Π½ΠΈΡ, ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΊΡΠ΅Π΄ΠΈΡΠ½ΠΎΠΉ ΠΊΠ°ΡΡΠ΅ ΠΈ Ρ. Π΄.
Π’Π΅Π³ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΡΠΌΡ Π²
HTML
. ΠΠΎΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅Π³Π° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΡΠΌΡ, ΡΠΎΠ±ΠΈΡΠ°ΡΡΠ΅ΠΉ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ:
Π’Π΅Π³ ΡΠΎΡΠΌΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π³ΠΎΠ²
ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ ΠΏΠΎΠ»Ρ Π²ΡΠ±ΠΎΡΠ°. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠΎΡΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠ΅Π³
, ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π° ββΠ½Π° Π²Π΅Π±-ΡΠ°ΠΉΡ.
ΠΠ½ΠΎΠΏΠΊΠ° HTML
Π’Π΅Π³
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ Π² ΡΠΎΡΠΌΠ΅ HTML
. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΠΎΡΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ ΠΏΠ»Π°ΡΠ΅ΠΆΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Ρ Π²Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ <ΠΊΠ½ΠΎΠΏΠΊΠ°>
Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠΎΡΠΌΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠ³ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ Π½Π° Π²Π°Ρ ΡΠ°ΠΉΡ.
Π’Π΅Π³
Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠ΅Π³ΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΠ° ΡΠΈΠΏΠ°
. ΠΡΡΠΈΠ±ΡΡ type
, ΠΊΠ°ΠΊ ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΠΏΠΎΠ·ΠΆΠ΅, ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΡΠΎΡΠΌΠ΅, ΠΊΠ°ΠΊΠΎΠΉ ΡΠΈΠΏ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅Π³Π° HTML
Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ:
ΠΠΎΡ ΠΊΠ°ΠΊ Π½Π°ΡΠ° ΠΊΠ½ΠΎΠΏΠΊΠ° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π° Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ°:
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π° Π½Π°ΡΠ΅ΠΉ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ΅, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π²Π²Π΅Π΄Π΅Π½Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡΡ ΡΠΎΡΠΌΡ.
Π’Π΅Π³
ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π²ΡΠ΅ΠΌΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ°ΠΌΠΈ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ, Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΡΡΡ ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ². ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠ°Π·Π½ΡΠ΅ Π±ΡΠ°ΡΠ·Π΅ΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΡΡ <ΠΊΠ½ΠΎΠΏΠΊΠ°>
ΡΠ΅Π³ ΠΏΠΎ-Π΄ΡΡΠ³ΠΎΠΌΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Internet Explorer Π΄ΠΎ Π²Π΅ΡΡΠΈΠΈ 9 Π±ΡΠ΄Π΅Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ΅ΠΊΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΡΠΊΡΡΠ²Π°ΡΡΠΈΠΌ ΠΈ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠΈΠΌ ΡΠ΅Π³ΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π΄ΡΡΠ³ΠΈΠ΅ Π±ΡΠ°ΡΠ·Π΅ΡΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π°ΡΡΠΈΠ±ΡΡΠ° value
.
ΠΡΡΠΈΠ±ΡΡΡ ΡΠ΅Π³Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ HTML
Π’Π΅Π³ HTML
Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΡΠ΄ Π°ΡΡΠΈΠ±ΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, <ΠΊΠ½ΠΎΠΏΠΊΠ°> 9Π’Π΅Π³ 0030 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ Π²
HTML5
. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ ΡΠ΅Π³Π° HTML
.
Autofocus
ΠΡΡΠΈΠ±ΡΡ autofocus
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠΎΠΊΡΡ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ. ΠΠΎΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠ° autofocus
:
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΎ
ΠΡΡΠΈΠ±ΡΡ disabled
ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ ΠΊΠ½ΠΎΠΏΠΊΡ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ. ΠΠΎΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠ° disabled
:
ΠΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ Π½ΠΈΠΆΠ΅, Π½Π°ΡΠ° ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π΅Π°ΠΊΡΠΈΠ²Π½Π° ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π°ΠΆΠ°ΡΠ°:
Π€ΠΎΡΠΌΠ°
ΠΡΡΠΈΠ±ΡΡ ΡΠΎΡΠΌΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΊ ΡΠΎΡΠΌΠ΅. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΠ° ΡΠΎΡΠΌΡ
Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ°Π²Π½ΠΎ id
ΡΠΎΡΠΌΡ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΡΠΎΡΠΌΠ°. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π°ΡΡΠΈΠ±ΡΡΠ° ΡΠΎΡΠΌΡ, ΡΠ²ΡΠ·ΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Ρ Π½Π°ΡΠ΅ΠΉ ΡΠΎΡΠΌΠΎΠΉ pizza
: