综合二区_欧美成人综合_欧美成人二区_a黄视频_亚洲视频在线播放_一区二区三区视频免费看

µ±Ç°Î»ÖãºÊ×Ò³ > ÍøÕ¾¾ÉÀ¸Ä¿ > ѧϰ԰µØ > Éè¼ÆÈí¼þ½Ì³Ì > ·­Òëwww.djangobook.comÖ®µÚÎåÕ£ºÓëÊý¾Ý¿â½»»¥:Ä£ÐÍ

·­Òëwww.djangobook.comÖ®µÚÎåÕ£ºÓëÊý¾Ý¿â½»»¥:Ä£ÐÍ
2010-01-13 23:36:18  ×÷Õß:  À´Ô´:
µÚ3ÕÂÎÒÃÇ̸µ½ÁËÓÃDjango¹¹½¨¶¯Ì¬ÍøÕ¾£¬ÉèÖÃÊÓͼºÍURLÅäÖÃ
ÈçÎÒÃÇËù˵£¬ÊÔͼ¸ºÔðÂß¼­ºÍ·µ»ØÓ¦´ð£¬Àý×ÓÖÐÎÒÃǼÆËãÁ˵±Ç°µÄÈÕÆÚºÍʱ¼ä
ÏÖÔÚµÄWeb³ÌÐòÖг£³£ºÍÊý¾Ý¿â´ò½»µÀ
Ò»¸öÊý¾Ý¿âÇý¶¯µÄÍøÕ¾ÔÚºǫ́Á¬½ÓÊý¾Ý¿â·þÎñÆ÷£¬µÃµ½²¢ÏÔʾºÜºÃµÄ¸ñʽ»¯µÄWebÒ³Ãæ
ͬÑù£¬ÍøÕ¾Ò²¿ÉÒÔÌṩ¸ø·ÃÎÊÕßÒ²¾ßÓвÙ×÷Êý¾Ý¿âµÄ¹¦ÄÜ
Ðí¶à¸´ÔÓµÄÍøÕ¾ÒÔÉÏÁ½ÖÖ¹¦ÄܵĽáºÏ£¬ÈçAmazon.com¾ÍÊÇÒ»¸öÊý¾Ý¿âÇý¶¯µÄÕ¾µã
ÿһ¸ö²úÆ·Ò³Ãæ¶¼ÊÇAmazonÊý¾Ý¿â¸ñʽºóµÄHTML£¬Äã·ÃÎÊÒ³ÃæÒ²¾ÍÊǼä½Ó·ÃÎÊÊý¾Ý¿â
DjangoºÜÊʺÏÊý¾Ý¿âÇý¶¯µÄÍøÕ¾£¬Í¨¹ýPythonËüÌṩǿ´óµÄÊý¾Ý¿â·ÃÎÊÄÜÁ¦
ÕâÕ½«½²ÊöDjangoµÄÊý¾Ý¿â²ã

ÔÚÊÓͼÀï½øÐÐÊý¾Ý¿â²éѯµÄ“ÑÆ”·½Ê½
ǰһÕ½²µ½Í¨¹ýÔÚÊÓͼÀïÓ²±àÂëHTMLÀ´Êä³öHTMLµÄ“ÑÆ”·½Ê½£¬ÔÚÊÓͼÀïÒ²Óеõ½Êý¾Ý¿âÊý¾ÝµÄ“ÑÆ”·½Ê½
ÕâºÜ¼òµ¥£¬Ö»ÊÇʹÓÃһЩPython¿âÖ´ÐÐSQL²éѯ²¢ÇÒ´¦Àí½á¹û
ÔÚÏÂÃæµÄÀý×ÓÀïÎÒÃÇʹÓÃMySQLdb¿â(¿ÉÒÔÔÚÈçϵØÖ·µÃµ½http://sourceforge.net/projects/mysql-python)
À´Á¬½ÓMySQLÊý¾Ý¿â£¬µÃµ½Ò»Ð©¼Ç¼À´Ìî³äÄ£°å£¬²¢ÏÔʾµ½WebÒ³ÃæÉÏ£º
Java´úÂë ¸´ÖÆ´úÂë
  1. from django.shortcuts import render_to_response   
  2. import MySQLdb   
  3.   
  4. def book_list(request):   
  5.     db = MySQLdb.connect(user='me', db='mydb', passwd='secret', host='localhost')   
  6.     cursor = db.cursor()   
  7.     cursor.execute('SELECT name FROM books ORDER BY name')   
  8.     names = [row[0for row in cursor.fetchall()]   
  9.     db.close()   
  10.     return render_to_response('book_list.html', {'names': names})  

Õâ¸ö·½·¨¿ÉÒÔ¹¤×÷£¬µ«ÊÇÂíÉÏһЩÎÊÌâ³öÀ´ÁË£º
1£¬ÎÒÃǰÑÊý¾Ý¿âÁ¬½ÓµÄ²ÎÊýÓ²±àÂëµ½´úÂëÀïÃæÁË£¬ÀíÏë×´¿öÏÂËüÃÇÓ¦¸Ã´æ´¢ÔÚDjangoÅäÖÃÀïÃæ
2£¬ÎÒÃDZØÐëдһЩÑù°åÎļþ´úÂ룬È罨Á¢Á¬½Ó£¬´´½¨cursor£¬Ö´ÐÐÓï¾äºÍ¹Ø±ÕÁ¬½ÓµÈ
ϸÏë×´¿öÏ£¬ÎÒÃÇÓ¦¸ÃÖ»ÐèÖ¸³öÎÒÃÇÐèҪʲô½á¹û
3£¬Ëü°ÑÎÒÃǺÍMySQL°óÔÚÒ»Æð£¬Èç¹ûÎÒÃÇÏëÇл»µ½PostgreSQL
ÎÒÃDZØÐëʹÓò»Í¬µÄÊý¾Ý¿âÊÊÅäÆ÷psycopg£¬¸Ä±äÊý¾Ý¿âÁ¬½Ó²ÎÊýÒÔ¼°¿¼ÂÇÖØÐ´SQLÓï¾ä
ÀíÏë×´¿öÏÂÊý¾Ý¿â·þÎñÆ÷Ó¦¸ÃÊdzéÏóµÄ£¬Ìæ»»Êý¾Ý¿âÓ¦¸ÃÖ»ÔÚÒ»¸öµØ·½ÉèÖÃ
Äã¿ÉÄÜ»áÏ룬DjangoµÄÊý¾Ý¿â²ãµÄÄ¿±êÓ¦¸ÃÊǽâ¾öÕâЩÎÊÌ⣬ÏÂÃæ¼òµ¥¿´¿´ÔõÑùÓÃDjangoÊý¾Ý¿âAPIÖØÐ´ÉÏÃæ´úÂ룺
Java´úÂë ¸´ÖÆ´úÂë
  1. from django.shortcuts import render_to_response   
  2. from mysite.books.models import Book   
  3.   
  4. def book_list(request):   
  5.     books = Book.objects.order_by('name')   
  6.     return render_to_response('book_list.html', {'books': books})  

ÎÒÃÇÔÚ±¾ÕÂÉÔºó½âÊÍÕâЩ´úÂ룬ÏÖÔÚÏȸоõÒ»ÏÂËüµÄÑù×Ó

MTV¿ª·¢Ä£Ê½
ÔÚÎÒÃÇרÑиü¶àµÄ´úÂë֮ǰ£¬ÈÃÎÒÃÇÏÈ»¨µãʱ¼ä¿¼ÂÇһЩDjango Web³ÌÐòµÄÕûÌåÉè¼Æ
Ç°ÃæµÄÕ½ÚÎÒÃÇÌáµ½£¬DjangoÉè¼ÆÀ´¹ÄÀøËÉñîºÏºÍ·ÖÀë³ÌÐòÄ£¿é
Èç¹ûÄã×ñÑ­Õâ¸öÕÜѧ£¬¸Ä±äÒ»²¿·Ö´úÂë¶ø²»Ó°ÏìÆäËüÄ£¿éÊǺÜÈÝÒ××öµ½µÄ
ÀýÈçÔÚÊÓͼ·½·¨ÀÎÒÃÇÌÖÂÛÁËʹÓÃÄ£°åÀ´·ÖÀëÒµÎñÂß¼­ºÍ³ÊÏÖÂß¼­µÄÖØÒªÐÔ
ÔÚÊý¾Ý¿â²ãµÄÊý¾Ý·ÃÎÊÂß¼­ÎÒÃǽ«×ñѭͬÑùµÄÕÜѧ
Êý¾Ý·ÃÎÊ£¬ÒµÎñÂß¼­ºÍ³ÊÏÖÂß¼­×é³É³£ËµµÄ“Model View Controller”(MVC)Èí¼þ¼Ü¹¹Ä£Ê½
“Model”Ö¸Êý¾Ý·ÃÎʲ㣬“View”ָϵͳÖÐÑ¡ÔñʲôÀ´³ÊÏÖÒÔ¼°ÔõÑù³ÊÏֵIJ¿·Ö
“Controller”ÔòָϵͳÖÐͨ¹ýÓû§ÊäÈë¾ö¶¨Ê¹ÓÃÄĸöÊÓͼ¼°·ÃÎʱØÒªµÄÄ£Ð͵IJ¿·Ö
²ÉÓÃMVC,MTVµÈËõдֻÊDZãÓÚ¿ª·¢ÈËÔ±¹µÍ¨
Django×ñÑ­ÁËMVCģʽ£¬Ëü¿ÉÒÔ±»³ÆÎ»MVC¿ò¼Ü£¬ÏÂÃæÊÇM,V,CÔÚDjangoÖеÄλÖãº
1£¬M£¬Êý¾Ý¾Ý·ÃÎʲ¿·Ö£¬Í¨¹ýDjangoµÄÊý¾Ý¿â²ã´¦Àí£¬Ò²¾ÍÊDZ¾ÕÂËù½²ÊöµÄÄÚÈÝ
2£¬V£¬Ñ¡ÔñÊý¾Ý²¢¾ö¶¨ÔõÑù³ÊÏֵIJ¿·Ö£¬Í¨¹ýÊÓͼºÍÄ£°åÀ´´¦Àí
3£¬C£¬¿ØÖƲ¿·Öͨ¹ýDjango¿ò¼Ü±¾ÉíµÄURLÅäÖúͶÔPython·½·¨µÄµ÷ÓÃÀ´´¦Àí
ÒòΪ“C”ÊÇDjango¿ò¼Ü±¾Éí´¦Àí¶øµ¼ÖÂDjango´ó²¿·Ö¾«²ÊµÄ¶«Î÷ÔÚÓÚÄ£ÐÍ£¬Ä£°åºÍÊÓͼ
ËùÒÔDjango±»³ÆÎ»MTV¿ò¼Ü£º
1£¬M£¬´ú±íÄ£ÐÍ£¬ÊÇÊý¾Ý·ÃÎʲ㣬Ëü°üº¬Á˹ØÓÚÊý¾ÝµÄÒ»Çж«Î÷£¬ÔõÑùµÃµ½Êý¾Ý£¬ÔõÑùÑéÖ¤Êý¾Ý£¬
Ëü¾ßÓÐʲôÐÐΪÒÔ¼°Êý¾ÝÖ®¼äµÄ¹ØÏµ
2£¬T£¬´ú±íÄ£°å£¬ÊÇÕ¹Ïֲ㣬Ëü°üº¬Á˳ÊÏÖÏà¹ØµÄ¾ö²ß£¬ÈçÄÚÈÝÔõÑùÔÚWebÒ³ÃæÖÐÏÔʾÒÔ¼°ÆäËüÀàÐ͵ÄÎĵµ
3£¬V£¬´ú±íÊÓͼ£¬ÊÇÒµÎñÂß¼­²ã£¬Ëü°üº¬ÁË·ÃÎÊÄ£Ð͵ÄÂß¼­ºÍÑ¡ÔñºÏÊʵÄÄ£°å
Äã¿ÉÒÔÈÏΪÊÓͼÊÇÄ£ÐͺÍÄ£°åµÄÇÅÁº
Èç¹ûÄã¶ÔMVC¿ò¼ÜÊìϤ£¬ÈçRuby on Rails£¬Äã¿ÉÒÔ°ÑDjangoµÄÊÓͼÏëÏó³É“controllers”£¬
°ÑDjangoµÄÄ£°åÏëÏó³É“views”£¬ÕâÊǶÔMVCµÄ²»Í¬½âÊÍÔì³ÉµÄ²»ÐҵĻìÂÒ
ÔÚDjango¹ØÓÚMVCµÄ½âÊÍÖУ¬“view”ÃèÊö³ÊÏÖ¸øÓû§µÄÊý¾Ý
ûÓбØÒªÅªÇåÊý¾ÝÔõÑùÏÔʾ£¬¶øÊÇÃèÊöÄĸöÊý¾ÝÓ¦¸Ã±»³ÊÏÖ
¶Ô±È¶øÑÔ£¬Ruby on RailsÒÔ¼°ÀàËÆµÄ¿ò¼Ü½¨ÒécontrollerµÄ¹¤×÷°üÀ¨¾ö¶¨ÄĸöÊý¾ÝÏÔʾ¸øÓû§£¬
ÊÓͼÑϸñµÄ¾ö¶¨Êý¾ÝÔõÑùÏÔʾ£¬¶ø²»ÊǾö¶¨ÄĸöÊý¾ÝÀ´ÏÔʾ
ÿһ¸ö½âÊͶ¼²»±ÈÁíÒ»¸öÕýÈ·£¬×îÖØÒªµÄÊÂÇéÊÇÀí½âµ×²ãµÄ¸ÅÄî

ÅäÖÃÊý¾Ý¿â
ËùÓеÄÕÜѧÀμÇÔÚÐÄÖ®ºó£¬ÈÃÎÒÃÇ¿ªÊ¼·¢¾òDjangoµÄÊý¾Ý¿â²ã
Ê×ÏÈÎÒÃÇ×¢ÒâһЩϸСµÄÅäÖã¬ÎÒÃÇÐèÒª¸æËßDjangoʹÓÃÄĸöÊý¾Ý¿âºÍÔõÑùÁ¬½ÓËü
ÎÒÃǼÙÉèÄãÒѾ­ÓÐÁËÒ»¸öÊý¾Ý¿â·þÎñÆ÷£¬Æô¶¯Ëü²¢´´½¨Ò»¸ödatabase(ʹÓÃCREATE DATABASEÓï¾ä)
SQLiteÊÇÒ»¸öÌØÀý£¬²»ÐèÒª´´½¨database£¬ÒòΪSQLiteÔÚÎļþϵͳÉÏʹÓõ¥¶ÀµÄÎļþ´æ´¢Êý¾Ý
ºÍÉÏÒ»ÕµÄTEMPLATE_DIRSÒ»Ñù£¬Êý¾Ý¿âÅäÖÃÔÚDjangoÅäÖÃÎļþÀïÃæ£¬Ä¬ÈÏÊÇsettings.py
Java´úÂë ¸´ÖÆ´úÂë
  1. DATABASE_ENGINE = ''  
  2. DATABASE_NAME = ''  
  3. DATABASE_USER = ''  
  4. DATABASE_PASSWORD = ''  
  5. DATABASE_HOST = ''  
  6. DATABASE_PORT = ''  

ÎÒÃÇÀ´¿´¿´Ã¿¸öÅäÖÃÊÇʲôÒâ˼£º
1£¬DATABASE_ENGINE¸æËßDjangoʹÓÃÄĸöÊý¾Ý¿âÒýÇæ£¬Èç¹ûÄãʹÓÃÊý¾Ý¿âºÍDjango¹¤×÷µÄ»°£¬
DATABASE_ENGINE±ØÐëÊÇÏÂÃæµÄ×Ö·û´®¼¯ºÏ£º
ÒýÓÃ

ÉèÖà                        Êý¾Ý¿â               ÐèÒªµÄÊÊÅäÆ÷
postgresql             PostgreSQL       psycopg version 1.x, http://initd.org/projects/psycopg1

postgresql_psycopg2    PostgreSQL       psycopg version 2.x, http://initd.org/projects/psycopg2

mysql                  MySQL            MySQLdb, http://sourceforge.net/projects/mysql-python

sqlite3                SQLite No adapter needed if using Python 2.5+ Otherwise, pysqlite, http://initd.org/tracker/pysqlite

ado_mssql        Microsoft SQL Server   adodbapi version 2.0.1+, http://adodbapi.sourceforge.net/

oracle                 Oracle           cx_Oracle, http://www.python.net/crew/atuining/cx_Oracle/
 

×¢Òâ²»¹ÜÄãʹÓÃʲôÊý¾Ý¿â£¬Äã¶¼ÐèÒª°²×°ÏàÓ¦µÄÊý¾Ý¿âÊÊÅäÆ÷£¬Ã¿¸öÊÊÅäÆ÷ÔÚÍøÉ϶¼ÊÇÃâ·ÑµÄ
2£¬DATABASE_NAME¸æËßDjangoÊý¾Ý¿âÃû×ÖÊÇʲô£¬Èç¹ûÄãʹÓÃSQLite£¬
Ö¸³öÊý¾Ý¿âÎļþµÄÍêÕûµÄÎļþϵͳ·¾¶£¬Èç'/home/django/mydata.db'
3£¬DATABASE_USER¸æËßDjangoÄãÁ¬½ÓÊý¾Ý¿âµÄÓû§Ãû£¬Èç¹ûÄãʹÓÃSQLite£¬ÕâÏîΪ¿Õ
4£¬DATABASE_PASSWORD¸æËßDjangoÄãÁ¬½ÓÊý¾Ý¿âµÄÃÜÂ룬Èç¹ûÄãʹÓÃSQLite»òÕßÄãµÄÃÜÂëΪ¿Õ£¬ÔòÕâÏîΪ¿Õ
5£¬DATABASE_HOST¸æËßDjangoÄãÁ¬½ÓÊý¾Ý¿âµÄÖ÷»ú£¬Èç¹ûÄãµÄÊý¾Ý¿âºÍDjango°²×°ÔÚͬһ̨¼ÆËã»úÉÏ£¬ÔòÕâÏîΪ¿Õ
Èç¹ûÄãʹÓÃSQLite£¬ÕâÏîΪ¿Õ
MySQLÔÚÕâÀïºÜÌØÊ⣬Èç¹ûÕâÏîµÄÖµÒÔ'/'¿ªÍ·²¢ÇÒÄãʹÓÃMySQL£¬MySQL»áͨ¹ýUnix socketÁ¬½ÓÌØÊâµÄsocket
ÀýÈçDATABASE_HOST £½ '/var/run/mysql/'
Èç¹ûÄãʹÓÃMySQLµ«ÕâÏîµÄÖµ²»ÊÇÒÔ'/'¿ªÍ·£¬ÄÇôÕâÏîµÄÖµ¾Í¼ÙÉèΪËùÁ¬½ÓµÄÖ÷»ú
6£¬DATABASE_PORT¸æËßDjangoÁ¬½ÓÊý¾Ý¿âµÄ¶Ë¿Ú£¬Èç¹ûÄãʹÓÃSQLite£¬ÔòÕâÏîΪ¿Õ
·ñÔò£¬Èç¹ûÕâÏîΪ¿Õ£¬µ×²ãµÄÊý¾Ý¿âÊÊÅäÆ÷»áʹÓøøµÄÊý¾Ý¿âµÄĬÈ϶˿Ú
´ó²¿·ÖÇé¿öÏÂĬÈ϶˿ڼ´¿É
Ò»µ©ÄãÊäÈëÁËÕâÏîÉèÖ㬲âÊÔÒ»ÏÂÄãµÄÅäÖÃ
Ê×ÏÈÔÚÄãµÚ2Õ´´½¨µÄmysiteÏîĿĿ¼ÏÂÔËÐÐpython manage.py shell
Ä㽫»á¿´µ½½øÈëÁËPython½»»¥»·¾³£¬µ«ÊÇÑÛ¾¦ÊÇ»áÆ­È˵Ä£¡
ËüºÍÆÕͨµÄpythonÓÐÒ»¸öÖØÒªµÄ²»Í¬£¬ÆÕͨµÄpythonÃüÁî½øÈëµÄÊÇPython shell£¬
µ«ÊÇǰÕ߸æËßDjangoÔÚÆô¶¯shellǰʹÓÃÄĸösettingsÎļþ
ÕâÊÇ×öÊý¾Ý¿â²éѯµÄÖ÷ҪǰÌᣬDjangoÐèÒªÖªµÀʹÓÃÄĸösettingsÎļþÀ´µÃµ½Êý¾Ý¿âÁ¬½ÓÐÅÏ¢
ÔÚºǫ́£¬python manage.py shellÉèÖÃÁËDJANGO_SETTINGS_MODULE»·¾³±äÁ¿
ºóÃæÎÒÃÇ»á½âÊÍËüµÄ΢ÃîÖ®´¦£¬ÏÈÈÃÎÒÃDzâÊÔÒ»ÏÂÊý¾Ý¿âÅäÖãº
>>> from django.db import connnection
>>> cursor = connection.cursor()
Èç¹ûʲôÊÂÇ鶼ûÓз¢Éú£¬ÔòÄãµÄÊý¾Ý¿âÅäÖöÔÁË
·ñÔò£¬¼ì²é´íÎóÐÅÏ¢×÷ΪÏßË÷£¬¿´¿´ÄÄÀï³ö´íÁË£¬ÏÂÃæÊÇһЩ³£¼ûµÄ´íÎó:
Java´úÂë ¸´ÖÆ´úÂë
  1. ´íÎóÐÅÏ¢                                                    ½â¾ö·½·¨    
  2. You haven’t set the DATABASE_ENGINE setting yet.   
  3. ÉèÖÃDATABASE_ENGINE¶ø²»ÊÇΪ¿Õ   
  4.   
  5. Environment variable DJANGO_SETTINGS_MODULE is undefined.   
  6. ÔËÐÐcommand python manage.py shell¶ø²»ÊÇpython   
  7.   
  8. Error loading __ module: No module named __.   
  9. Ä㻹ûÓа²×°Êý¾Ý¿âÏà¹ØµÄÊÊÅäÆ÷(Èçpsycopg»òMySQLdb)   
  10.   
  11. __ isn’t an available database backend.   
  12. ½«ÄãµÄDATABASE_ENGINEÉèÖÃΪºÏ·¨µÄÊý¾Ý¿âÒýÇæ£¬ÄãÊDz»ÊÇÇôí×ÖĸÁË£¿   
  13.   
  14. database __ does not exist   
  15. ¸ü¸ÄDATABASE_NAMEÖ¸ÏòÒ»¸ö´æÔÚµÄÊý¾Ý¿â£¬»òÕßÖ´ÐÐCREATE DATABASEÓï¾äÀ´´´½¨Ëü   
  16.   
  17. role __ does not exist   
  18. ¸ü¸ÄDATABASE_USERÖ¸ÏòÒ»¸ö´æÔÚµÄuser£¬»òÕßÔÚÊý¾Ý¿âÖд´½¨Ò»¸öuser   
  19.   
  20. could not connect to server   
  21. È·ÈÏDATABASE_HOSTºÍDATABASE_PORTÉèÖÃÕýÈ·£¬ÒÔ¼°È·ÈÏÊý¾Ý¿âÕýÔÚÔËÐР 


ÄãµÄµÚÒ»¸öapp
¼ÈÈ»ÄãÑéÖ¤ÁËÊý¾Ý¿âÁ¬½ÓÕýÈ·£¬ÏÖÔÚ¾ÍÀ´´´½¨Ò»¸öDjango app
Django appÊÇһЩDjango´úÂ룬°üÀ¨Ä£ÐͺÍÊÓͼ£¬ËüÃÇÔÚͬһ¸öPython°üÏÂÃæ£¬´ú±íÁËÒ»¸öÍêÕûµÄDjango³ÌÐò
ÔÚÕâÀïÖµµÃ½âÊÍÒ»ÏÂÊõÓÒòΪÕâÈÝÒ×ʹ³õѧÕßŪºýÍ¿
ÎÒÃǵÚ2ÕÂÒѾ­´´½¨ÁËÒ»¸öproject£¬ÄÇôprojectºÍappµÄÇø±ðÊÇÊ²Ã´ÄØ£¿Çø±ð¾ÍÊÇÅäÖúʹúÂ룺
1£¬Ò»¸öprojectÊÇÐí¶àDjango appµÄ¼¯ºÏµÄʵÀý£¬¼ÓÉÏÄÇЩappµÄµÄÅäÖÃ
¼¼ÊõÉÏÀ´Ëµ£¬Ò»¸öprojectΨһµÄǰÌáÊÇËüÌṩһ¸ösettingsÎļþ£¬ÀïÃæ¶¨ÒåÁËÊý¾Ý¿âÁ¬½ÓÐÅÏ¢£¬
°²×°µÄapp£¬TEMPLATE_DIRSµÈµÈ
2£¬Ò»¸öappÊÇDjangoµÄ¿ÉÒÆ¶¯¹¦Äܼ¯£¬Í¨³£°üÀ¨Ä£ÐͺÍÊÓͼ£¬´æÔÚÓÚÒ»¸öµ¥¶ÀµÄPython°üÀïÃæ
ÀýÈ磬Djangoº¬Óм¸¸öapp£¬ÈçcommentingϵͳºÍ×Ô¶¯µÄadmin½çÃæ
¹Ø¼üҪעÒâµÄÊÇËüÃÇÊÇ¿ÉÒÆ¶¯²¢ÇÒ¿ÉÒÔÔÚ²»Í¬µÄprojectÖØÓÃ
ûÓÐÑϸñµÄ¹æ¶¨ÔõÑù°²Åźͼƻ®ÄãµÄDjango´úÂ룬ËüÊǺÜÁé»îµÄ
Èç¹ûÄãÔÚ¹¹½¨Ò»¸öµ¥¶ÀµÄÍøÕ¾£¬Äã¿ÉÄÜֻʹÓÃÒ»¸öapp
Èç¹ûÄãÔÚ¹¹½¨Ò»¸ö¸´ÔÓµÄÕ¾µã£¬Äã¿ÉÄÜÏë°ÑËü·Ö³É¼¸¸öapp£¬ÕâÑùÄã¾Í¿ÉÒÔÔÚÒÔºó·Ö±ðÖØÓÃËûÃÇ
ÔÚÇ°ÃæÎÒÃǵÄÀý×ÓÖÐÖ¤Ã÷ÎÒÃÇȷʵ¸ù±¾²»ÐèÒª´´½¨app£¬ÎÒÃÇÖ»ÊÇ´´½¨ÁËÒ»¸öviws.pyÎļþ
È»ºóÔÚÀïÃæÐ´ÊÓͼ·½·¨²¢ÉèÖÃÎÒÃǵÄURLÅäÖÃÖ¸ÏòÕâЩ·½·¨£¬ÎÒÃDz»ÐèÒª“apps”
µ«ÊÇ£¬ÓÐÒ»µãÐèÒªÖØÊÓapp¹ßÀý£¬Èç¹ûÄãʹÓÃDjangoµÄÊý¾Ý¿â²ã(Ä£ÐÍ)£¬Äã±ØÐë´´½¨Django app
Ä£ÐͱØÐë´æÔÚÓÚapp£¬ËùÒÔΪÁË¿ªÊ¼Ð´Ä£ÐÍ£¬ÎÒÃǽ«´´½¨Ò»¸öеÄapp
ÔÚÇ°Ãæ´´½¨µÄmysiteĿ¼ÏÂÃæ£¬ÔËÐÐÏÂÃæµÄÃüÁîÀ´´´½¨Ò»¸öеÄapp£º
python manage.py startapp books
Õâ¸öÃüÁî²»»áÔì³ÉÈκÎÊä³ö£¬µ«ËüÔÚmysiteĿ¼Ï´´½¨ÁËÒ»¸öbooksĿ¼£¬ÈÃÎÒÃÇ¿´¿´ËüµÄÄÚÈÝ£º
books/
    __init__.py
    models.py
    views.py
ÕâЩÎļþ½«°üº¬Õâ¸öappµÄÄ£ÐͺÍÊÓͼ
ÓÃÄã×îϲ»¶µÄÎı¾±à¼­Æ÷¿´¿´models.pyºÍviews.py£¬ËüÃǶ¼ÊǿյÄ£¬³ýÁËmodels.pyÀïÒ»¸öimport
ÕâÊÇÄãµÄDjango appµÄ¿Õ°×Çø

ÓÃPython¶¨ÒåÄ£ÐÍ
ÎÒÃÇÇ°ÃæÌÖÂÛµ½£¬MTVÖеÄM´ú±íÄ£ÐÍ
Ò»¸öDjangoÄ£ÐÍÓÃPython´úÂëÃèÊöÁËÄãµÄÊý¾Ý¿âÖеÄÊý¾Ý
ËüÊÇÄãµÄÊý¾Ý½á¹¹£¬Ï൱ÓÚSQLµÄCREATE TABLEÓï¾ä£¬³ýÁËÔÚPythonÖÐËü±ÈÊý¾Ý¿â¶¨Òå°üº¬µÄÄÚÈݸü¶à
DjangoÔÚºǫ́ʹÓÃÄ£ÐÍÀ´Ö´ÐÐSQL´úÂë²¢·µ»Ø·½±ãµÄPythonÊý¾Ý½á¹¹À´±íʾÄãµÄÊý¾Ý¿â±íµÄÐÐ
DjangoҲʹÓÃÄ£ÐÍÀ´ÃèÊöһЩ¸ß¼¶¸ÅÄÕâЩSQLÊÇ×ö²»µ½µÄ
Èç¹ûÄã¶ÔÊý¾Ý¿âºÜÊìϤ£¬Äã¿ÉÄÜÂíÉÏ»áÏëµ½¼ÈÔÚPythonÖÐÓÖÔÚSQLÖж¨ÒåÊý¾ÝÄ£ÐÍÆñ²»ÊǺܶàÓࣿ
Django²ÉÓÃÕâÖÖ¹¤×÷·½Ê½Óм¸¸öÔ­Òò£º
1£¬×ÔʡҪÇó¹ý¶È²¢ÇÒ²»ÍêÃÀ
ΪÁËÌṩ·½±ãµÄÊý¾Ý·ÃÎÊAPI£¬DjangoÐèÒªÖªµÀÊý¾Ý¿â½á¹¹£¬ÓÐÁ½ÖÖ·½Ê½´ïµ½Õâ¸öÄ¿±ê
Ò»ÊÇÔÚPythonÀïÏÔʽµÄÃèÊöÊý¾Ý£¬Ò»ÊÇÔËÐÐʱÄÚÊ¡Êý¾Ý¿âÀ´¾ö¶¨Êý¾ÝÄ£ÐÍ
µÚ¶þÖÖ·½Ê½¿´ÆðÀ´¸ü¸É¾»£¬ÒòΪ±íµÄÔªÊý¾Ý½ö½ö´æÔÚÓÚÒ»¸öµØ·½£¬µ«Õâ»áµ¼Ö¼¸¸öÎÊÌâ
µÚÒ»£¬ÔËÐÐʱÄÚÊ¡Êý¾Ý¿âÏÔȻҪÇó¹ý¶È
Èç¹ûÿ´ÎWebÇëÇó¶¼ÐèÒªÄÚÊ¡Êý¾Ý¿â£¬¼´Ê¹Web·þÎñÆ÷ÒѾ­³õʼ»¯£¬ÕâÒ²»áµ¼ÖµĹý¶ÈµÄµÈ¼¶²»¿É½ÓÊÜ
(ÓÐЩÈËÈÏΪÕâ¸ö¹ý¶ÈµÄµÈ¼¶¿ÉÒÔ½ÓÊÜ£¬µ«DjangoµÄ¿ª·¢ÕßÄ¿±êÊÇ´ò°Ü¾¡¿ÉÄܶàµÄ¹ý¶È¿ò¼Ü£¬
ËùÒÔÕâ¸ö·½°¸Ê¹Django³É¹¦µÄÔÚËÙ¶ÈÉÏ¿ìÓÚÆäËüµÄ¸ß¼¶¿ò¼Ü)µÚ¶þ£¬Ò»Ð©Êý¾Ý¿âÌØ±ðÊǾɰ汾µÄMySQL
²¢²»°Ñ×ã¹»µÄÔªÊý¾Ý´æ´¢ÆðÀ´£¬ËùÒԾ͵¼Ö²»ÄܽøÐÐ׼ȷºÍÍêÕûµÄ×ÔÊ¡
2£¬Ð´Python´úÂëÊÇ¿ìÀֵ쬱£³ÖËùÓеÄÊÂÇéÓÃPythonÀ´×ö¿ÉÒÔ¼õÉÙÄã´óÄÔ×÷Çл»µÄʱ¼ä
Èç¹ûÄã±£³ÖÒ»¸öµ¥¶ÀµÄ¿ª·¢»·¾³ºÍÐÄÖǾ¡¿ÉÄܾã¬Ëü½«ÊÇÄã·Ç³£µÄ¸ßЧ
дSQL£¬È»ºóPython£¬È»ºóÓÖSQLÊǺÜÁîÈËÐÄ·³µÄ
3£¬ÈÃÊý¾ÝÄ£ÐÍ´æ´¢ÔÚ´úÂëÀï¶ø²»ÊÇÄãµÄÊý¾Ý¿â»áʹÄã¸üÈÝÒ׿ØÖÆÄãµÄÄ£ÐͰ汾
ÕâÑùÄã¿ÉÒÔºÜÇáËɵĸú×ÙÄãµÄÊý¾ÝµÄ¸ü¸Ä
4£¬SQL½ö½öÔÊÐí¹ØÓÚÊý¾Ý½á¹¹µÄijһ¼¶±ðµÄÔªÊý¾Ý
ÀýÈ磬´ó²¿·ÖÊý¾Ý¿âϵͳ²¢²»ÌṩרÃŵÄÊý¾ÝÀàÐÍÀ´Ö§³Öe-mailµØÖ·»òÕßurl
DjangoÄ£ÐÍÔò¿ÉÒÔ£¬¸ß¼¶Êý¾ÝÀàÐ͵ÄÓŵãÊǸü¸ßµÄÉú²úÂʺ͸üÒ×ÖØÓõĴúÂë
5£¬SQLÔÚ²»Í¬µÄÊý¾Ý¿âƽ̨²»Ò»Ö£¬ÀýÈ磬Èç¹ûÄãÕýÔÚ·¢²¼ÄãÒ»¸öWeb³ÌÐò
·¢²¼Ò»¸öPythonÄ£¿éÀ´ÃèÊöÊý¾Ý½á¹¹»á±È·Ö¿ªÎªMySQL£¬PostgreSQLºÍSQLiteдCREATE TABLEÓï¾ä¸ü¸ßЧ
¾¡¹ÜÈç´Ë£¬Õâ¸ö·½·¨µÄÒ»¸öȱµãÊÇPython´úÂëËù×öµÄÊÂÇé¿ÉÄܳ¬³öʵ¼ÊÉÏÊý¾Ý¿âÀïµÄÊý¾ÝµÄ·¶Î§
Èç¹ûÄã¸ü¸ÄÁËDjangoÄ£ÐÍ£¬ÄãÐèÒªÔÚÄãµÄÊý¾Ý¿â×öͬÑùµÄ¸Ä¶¯×ö±£³ÖÊý¾Ý¿âºÍÄ£ÐÍÒ»ÖÂ
±¾ÕºóÃæÎÒÃǽ«Ïêϸ½âÊͽâ¾ö´ËÎÊÌâµÄ²ßÂÔ
×îºó£¬ÎÒÃDZØÐëÖ¸³öµÄÊÇDjango°üº¬ÁËÒ»¸ö¸¨Öú¹¤¾ßÀ´Í¨¹ýÏÖ´æµÄÊý¾Ý¿âÉú³ÉÄ£ÐÍ
Õâ¶ÔÓÚѸËٽӹܺÍÔËÐÐÒÅÁôÊý¾ÝºÜÓаïÖú

ÄãµÄµÚÒ»¸öÄ£ÐÍ
ÕâÒ»ÕÂÎÒÃǽ«¹Ø×¢book/author/publisherÊý¾Ý½á¹¹£¬ËüÃÇÊÇÖÚËùÖÜÖªµÄ
ÎÒÃǽ«Ö§³ÖһϸÅÄÓòºÍ¹ØÏµ£º
1£¬Ò»¸öauthorÓÐÒ»¸ösalutation(ÈçMr.»òMrs.)£¬Ò»¸öfirst name£¬Ò»¸ölast name£¬Ò»¸öe-mailµØÖ·ºÍÒ»¸öÍ·Ïñphoto
2£¬Ò»¸öpublisherÓÐÒ»¸öname£¬Ò»¸östreetµØÖ·£¬Ò»¸öcity£¬Ò»¸östate/province£¬Ò»¸öcountryºÍÒ»¸öWeb site
3£¬Ò»¸öbookÓÐÒ»¸ötitleºÍÒ»¸öpublication date£¬Ò»¸ö»ò¶à¸öauthors(many-to-many)£¬Ò»¸öµ¥¶ÀµÄpublisher(one-to-many)
ÔÚDjangoÖеÚÒ»²½ÊÇʹÓÃPython´úÂëÃèÊöÉÏÃæµÄÊý¾Ý¿â½á¹¹£¬ÔÚstartappÃüÁî´´½¨µÄmodels.pyÖÐÊäÈëÏÂÃæµÄÄÚÈÝ£º
Java´úÂë ¸´ÖÆ´úÂë
  1. from django.db import models   
  2.   
  3. class Publisher(models.Model):   
  4.     name = models.CharField(maxlength=30)   
  5.     address = models.CharField(maxlength=50)   
  6.     city = models.CharField(maxlength=60)   
  7.     state_province = models.CharField(maxlength=30)   
  8.     country = models.CharField(maxlength=50)   
  9.     website = models.URLField()   
  10.   
  11. class Author(models.Model):   
  12.     salutation = models.CharField(maxlength=10)   
  13.     first_name = models.CharField(maxlength=30)   
  14.     last_name = models.CharField(maxlength=40)   
  15.     email = models.EmailField()   
  16.     headshot = models.ImageField(upload_to='/tmp')   
  17.   
  18. class Book(models.Model):   
  19.     title = models.CharField(maxlength=100)   
  20.     authors = models.ManyToManyField(Author)   
  21.     publisher = models.ForeignKey(Publisher)   
  22.     publication_date = models.DateField()  

ÕâÕÂÎÒÃÇ»á̸µ½Ä£ÐÍÓï·¨ºÍÑ¡ÏÈÃÎÒÃÇÏÈÀ´¿ìËٵĿ´¿´ÕâЩ´úÂëÀ´µÃµ½»ù±¾µÄÓ¡Ïó
ҪעÒâµÄµÚÒ»µãÊÇÿ¸öÄ£ÐͶ¼ÊÇdjango.db.models.ModelµÄ×ÓÀà
ËüÃǵĸ¸ÀàModel°üº¬ÁËÈÃÕâЩ¶ÔÏó¾ßÓÐÓëÊý¾Ý¿â½»»¥ÄÜÁ¦µÄ»úÖÆ
ÕâÑùÒ»À´ÎÒÃǵÄÄ£ÐÍÖ»¸ºÔð¶¨Òå×Ô¼ºµÄÓò¾ÍÐÐÁË£¬Óï·¨Ï൱¼ò½à½ô´Õ
²»¹ÜÏàÐÅÓë·ñ£¬Õâ¾ÍÊÇͨ¹ýDjango½øÐÐÊý¾Ý·ÃÎʵÄËùÓдúÂë
Ò»¸öÄ£ÐÍͨ³£ÓòÒ»¸öÊý¾Ý¿â±í¶ÔÓ¦£¬¶øÃ¿¸öÊôÐÔºÍÊý¾Ý¿â±íµÄÒ»ÁжÔÓ¦
ÊôÐÔÃû¶ÔÓ¦ÁÐÃû£¬ÊôÐÔµÄÀàÐÍ(ÈçCharField)¶ÔÓ¦Êý¾Ý¿âÁÐÀàÐÍ
ÀýÈçPublisherÄ£ÐͶÔÓ¦ÁËÏÂÃæµÄ±í(¼ÙÉèʹÓÃPostgreSQLµÄCREATE TABLEÓï·¨)£º
Java´úÂë ¸´ÖÆ´úÂë
  1. CREATE TABLE "books_publisher" (   
  2.     "id" serial NOT NULL PRIMARY KEY,   
  3.     "name" varchar(30) NOT NULL,   
  4.     "address" varchar(50) NOT NULL,   
  5.     "city" varchar(60) NOT NULL,   
  6.     "state_province" varchar(30) NOT NULL,   
  7.     "country" varchar(50) NOT NULL,   
  8.     "website" varchar(200) NOT NULL   
  9. );  

ÊÂʵÉÏDjango×Ô¼º¿ÉÒÔÉú³ÉCREAT TABLEÓï¾ä£¬ÎÒÃÇÒ»»áÔÙ¿´
Ò»¸öÀà¶ÔÓ¦Ò»¸öÊý¾Ý¿â±íµÄÌØÀýÊǶà¶Ô¶à¹ØÏµ£¬ÎÒÃǵÄÀý×ÓÖÐBookÓÐÒ»¸öManyToManyField½Ð×÷authors
Õâ±íÃ÷bookÓµÓÐÒ»¸ö»ò¶à¸öauthors£¬µ«ÊÇBook±í²¢Ã»ÓÐauthorsÁÐ
Django´´½¨ÁËÒ»¸ö¸½¼ÓµÄ¶à¶Ô¶àÁ¬½Ó±íÀ´´¦Àíbooksµ½authorsµÄÓ³Éä
×îºó×¢ÒâµÄÊÇÎÒÃÇûÓÐÔÚÈκÎÒ»¸öÄ£ÐÍÖÐÏÔʾµÄ¶¨ÒåÖ÷¼ü
³ý·ÇÄã×Ô¼º¶¨ÒåÒ»¸öÖ÷¼ü£¬Django»á×Ô¶¯ÎªÃ¿¸öÄ£ÐÍÉú³ÉÒ»¸öintegerÖ÷¼üÓòid
ÿ¸öDjangoÄ£ÐͶ¼±ØÐëÓÐÒ»¸öµ¥ÁеÄÖ÷¼ü

°²×°Ä£ÐÍ
дÍê´úÂ룬ÏÂÃæÈÃÎÒÃÇÀ´´´½¨Êý¾Ý¿â±í
µÚÒ»²½ÊÇÔÚDjangoÖ줻îÕâЩģÐÍ£¬ÐèÒª°ÑbooksÕâ¸öappÌí¼Óµ½settingsÎļþµÄappsÁбí
±à¼­settings.py£¬²éÕÒINSTALLED_APPSÉèÖÃ
INSTALLED_APPS¸æËßDjangoÄÄЩappsÊǻµÄ£¬Ä¬ÈÏʱÈçÏÂËùʾ£º
Java´úÂë ¸´ÖÆ´úÂë
  1. INSTALLED_APPS = (   
  2.     'django.contrib.auth',   
  3.     'django.contrib.contenttypes',   
  4.     'django.contrib.sessions',   
  5.     'django.contrib.sites',   
  6. )  

ÏÈÓÃ(#)°ÑÕâЩstrings×¢Ê͵ô£¬ºóÃæÎÒÃÇÔÙ¼¤»îºÍÌÖÂÛËüÃÇ
È»ºóÌí¼Ó'mysite.books'µ½INSTALLED_APPSÁÐ±í£¬×îºóÈçÏÂËùʾ£º
Java´úÂë ¸´ÖÆ´úÂë
  1. INSTALLED_APPS = (   
  2.     #'django.contrib.auth',   
  3.     #'django.contrib.contenttypes',   
  4.     #'django.contrib.sessions',   
  5.     #'django.contrib.sites',   
  6.     'mysite.books',   
  7. )  

±ðÍüÁË×îºóµÄ¶ººÅ
˳±ã˵һÏ£¬±¾Êé×÷Õßϰ¹ßÓëÔÚÔª×éµÄÔªËØºóÃæ¶¼¼ÓÉ϶ººÅ£¬ÎÞÂÛÔª×éÊÇ·ñÖ»ÓÐÒ»¸öÔªËØ
Õâ¿ÉÒÔ±ÜÃâÍü¼Ç¼Ó¶ººÅ£¬¼ÓÁËÒ²²»»á·£¿î
'mysite.books'Ö¸ÎÒÃÇÕýÔÚ¹¤×÷µÄbooks app
INSTALLED_APPSÖеÄÿ¸öapp¶¼ÓÃÍêÕûµÄPython PATHÀ´±íʾ£¬¼´°üµÄPATH£¬ÓÃСÊýµã·Ö¸ôÀ´Ö¸Ïòapp°ü
Django appÒѾ­ÔÚsettingsÎļþ¼¤»î£¬ÎÒÃÇ¿ÉÒÔÔÚÊý¾Ý¿âÖд´½¨±íÁË
Ê×ÏÈͨ¹ýÈçϵÄÃüÁîÑéÖ¤Ò»ÏÂÄ£ÐÍ£ºpython manage.py validate
validateÃüÁî¼ì²éÎÒÃǵÄÄ£ÐÍÓï·¨ºÍÂß¼­ÕýÈ·Óë·ñ
Èç¹ûÒ»ÇÐÕý³££¬ÎÒÃǻῴµ½0 errors foundµÄÐÅÏ¢
·ñÔò£¬È·ÈÏÄãµÄÄ£ÐÍ´úÂëÊäÈëÕýÈ·£¬errorÊä³ö»á¸øÄãÓÐÓõÄÐÅÏ¢À´°ïÄãÕÒµ½´íÎóµÄ´úÂë
ÈκÎʱºòÄãÈÏΪÄãµÄÄ£ÐÍ´úÂëÓÐÎÊÌâ¶¼¿ÉÒÔÔËÐÐpython manage.py validateÀ´²¶×½Ä£ÐÍ´íÎó
Èç¹ûÄãµÄÄ£ÐÍÊǺϷ¨µÄ£¬ÔËÐÐÏÂÃæµÄÃüÁîΪbooks appµÄÄ£ÐÍÉú³ÉCREATE TABLEÓï¾ä
(Èç¹ûÄãʹÓÃUnix»áÓÐÎåÑÕÁùÉ«µÄÓï·¨¸ßÁÁ)£ºpython manage.py sqlall books
Õâ¸öÃüÁîÖУ¬booksÊÇappµÄÃû×Ö£¬ÔËÐÐÍêÃüÁÄã»á¿´µ½ÏÂÃæµÄÐÅÏ¢£º
Java´úÂë ¸´ÖÆ´úÂë
  1. BEGIN;   
  2. CREATE TABLE "books_publisher" (   
  3.     "id" serial NOT NULL PRIMARY KEY,   
  4.     "name" varchar(30) NOT NULL,   
  5.     "address" varchar(50) NOT NULL,   
  6.     "city" varchar(60) NOT NULL,   
  7.     "state_province" varchar(30) NOT NULL,   
  8.     "country" varchar(50) NOT NULL,   
  9.     "website" varchar(200) NOT NULL   
  10. );   
  11. CREATE TABLE "books_book" (   
  12.     "id" serial NOT NULL PRIMARY KEY,   
  13.     "title" varchar(100) NOT NULL,   
  14.     "publisher_id" integer NOT NULL REFERENCES "books_publisher" ("id"),   
  15.     "publication_date" date NOT NULL   
  16. );   
  17. CREATE TABLE "books_author" (   
  18.     "id" serial NOT NULL PRIMARY KEY,   
  19.     "salutation" varchar(10) NOT NULL,   
  20.     "first_name" varchar(30) NOT NULL,   
  21.     "last_name" varchar(40) NOT NULL,   
  22.     "email" varchar(75) NOT NULL,   
  23.     "headshot" varchar(100) NOT NULL   
  24. );   
  25. CREATE TABLE "books_book_authors" (   
  26.     "id" serial NOT NULL PRIMARY KEY,   
  27.     "book_id" integer NOT NULL REFERENCES "books_book" ("id"),   
  28.     "author_id" integer NOT NULL REFERENCES "books_author" ("id"),   
  29.     UNIQUE ("book_id""author_id")   
  30. );   
  31. CREATE INDEX books_book_publisher_id ON "books_book" ("publisher_id");   
  32. COMMIT;  

×¢ÒâÒÔϼ¸µã£º
1£¬±íÃ÷×Ô¶¯ÓÉappÃû(books)ºÍСдµÄÄ£ÐÍÃû£­publisher£¬bookºÍauthor×é³É
Äã¿ÉÒÔ¸²¸ÇÕâ¸öÐÐΪ£¬ÎÒÃDZ¾ÕºóÃæ»á¿´µ½
2£¬Ç°ÃæÌáµ½£¬Django×Ô¶¯¸øÃ¿¸ö±íÌí¼ÓÖ÷¼üidÓò£¬ÄãÒ²¿ÉÒÔ¸²¸ÇÕâµã
3£¬Ï°¹ßÔ¼ÊøÉÏDjango»áÔÚÍâ¼üÓòµÄÃû×ÖºóÃæÌí¼Ó“_id”£¬ÄãÒѾ­²Âµ½ÁË£¬ÄãÒ²¿ÉÒÔ¸²¸ÇÕâµã
4£¬Íâ¼ü¹ØÏµÓÉÏÔʽµÄREFERENCESÓï¾äÀ´Íê³É
5£¬ÕâЩCREATE TABLEÓï¾äÊÇÕë¶ÔÄãʹÓõÄÊý¾Ý¿âÉú³ÉµÄ£¬ËùÒÔÊý¾Ý¿âרÓеÄÓòÀàÐÍÈç
aotu_increment(MySQL)£¬serial(PostgreSQL)£¬»òÕßinteger primary key(SQLite)»á×Ô¶¯ÎªÄã´¦Àí
ÀàËÆµÄÈç±íÃûµÄÒýºÅÊÇʹÓõ¥ÒýºÅ»¹ÊÇË«ÒýºÅÒ²Ò»Ñù£¬Õâ¸öÀý×ÓÊÇʹÓõÄPostgreSQLÓï·¨
sqlallÃüÁîÊÂʵÉϲ¢Ã»ÓнӴ¥Êý¾Ý¿â»ò½¨±í£¬Ëü½ö½ö½«Êä³ö´òÓ¡µ½ÆÁÄ»ÉÏ
ËùÒÔÈç¹ûÄãÎÊËü£¬Äã¿ÉÒÔ¿´µ½DJango½«Ö´ÐÐʲô
Èç¹ûÄãÔ¸Ò⣬Äã¿ÉÒÔ¸´ÖÆÕ³ÌùÕâЩSQLµ½ÄãÊý¾Ý¿â¿Í»§¶Ë»òÕßʹÓÃUnix¹ÜµÀÀ´Ö±½Ó´«µÝËü
¾¡¹ÜÈç´Ë£¬DjangoÌṩһ¸ö¼òµ¥µÄ·½Ê½À´°ÑÕâЩSQLÌá½»Êý¾Ý¿â
ÏñÏÂÃæÕâÑùÔËÐÐsyncdbÃüÁpython manage.py syncdb
Äã»á¿´µ½ÈçÏÂÐÅÏ¢£º
Creating table books_publisher
Creating table books_book
Creating table books_author
Installing index for books.Book model
syncdb¼òµ¥µÄ°ÑÄãµÄÄ£ÐÍͬ²½µ½Êý¾Ý¿â
Ëü¼ì²éÊý¾Ý¿âºÍÄãµÄINSTALLED_APPSÖеÄËùÓÐappµÄËùÒÔÄ£ÐÍ£¬¿´¿´ÊÇ·ñÓÐЩ±íÒѾ­´æÔÚ£¬Èç¹û±í²»´æÔھʹ´½¨±í
×¢Òâsyncdb²»»áͬ²½¸Ä¶¯»òɾ³ýÁ˵ÄÄ£ÐÍ£¬Èç¹ûÄã¸Ä¶¯»òɾ³ýÁËÒ»¸öÄ£ÐÍ£¬syncdb²»»á¸üÐÂÊý¾Ý¿â(´ý»á¶ùÌÖÂÛÕâ¸ö)
Èç¹ûÄãÔÙÔËÐÐÒ»´Îpython manage.py syncdb£¬²»»á·¢ÉúÈκÎÊÂÇé
ÒòΪÄãûÓÐÌí¼ÓÄ£Ð͵½books app»òÌí¼Óµ½INSTALLED_APPSÖеÄÈκÎapp
Òò´ËÔËÐÐpython manage.py syncdbÊÇÒ»Ö±°²È«µÄ£¬Ëü²»»á°ÑÊÂÇéŪÔã
Èç¹ûÄã¸ÐÐËȤ£¬½øÈëÄãµÄÊý¾Ý¿â·þÎñÆ÷µÄÃüÁîÐпͻ§¶Ë¿´¿´Django´´½¨µÄÊý¾Ý¿â±í
Äã¿ÉÒÔÊÖ¶¯ÔËÐÐÃüÁîÐпͻ§¶ËÈçPostgreSQLµÄpsql£¬»òÕßÔËÐÐpython manage.py dbshell
»ùÓÚÄãµÄDATABASE_SERVERÉèÖ㬺óÕß½«¼ÆËã³öÔËÐÐÄĸöÃüÁîÐпͻ§¶Ë£¬Ò²¸ü·½±ã

Êý¾Ý·ÃÎÊ»ù´¡
Ò»µ©Äã´´½¨ÁËÒ»¸öÄ£ÐÍ£¬Django×Ô¶¯Ìṩ¸ß¼¶Python API¸øÕâЩģÐ͹¤×÷
ÔËÐÐpython manage.py shellÈ»ºóÊäÈëÏÂÃæµÄ´úÂëÊÔÊÔ£º
Java´úÂë ¸´ÖÆ´úÂë
  1. >>> from books.models import Publisher   
  2. >>> p = Publisher(name='Apress', address='2560 Ninth St.',   
  3. ...     city='Berkeley', state_province='CA', country='U.S.A.',   
  4. ...     website='http://www.apress.com/')   
  5. >>> p.save()   
  6. >>> p = Publisher(name="O'Reilly", address='10 Fawcett St.',   
  7. ...     city='Cambridge', state_province='MA', country='U.S.A.',   
  8. ...     website='http://www.oreilly.com/')   
  9. >>> p.save()   
  10. >>> publisher_list = Publisher.objects.all()   
  11. >>> publisher_list   
  12. [<Publisher: Publisher object>, <Publisher: Publisher object>]  

ËäȻֻÓм¸ÐдúÂ룬ȷ´ïµ½Á˺ܶàÄ¿µÄ£¬¾«²ÊµÄ²¿·ÖÊÇ£º
1£¬´´½¨Ò»¸ö¶ÔÏóÖ»ÐèimportºÏÊʵÄÄ£ÐÍÀಢͨ¹ý¸øÃ¿¸öÓò´«µÝÖµÀ´³õʼ»¯Ëü
2£¬µ÷ÓÃsave()·½·¨À´½«Ò»¸ö¶ÔÏó±£´æµ½Êý¾Ý¿â£¬ºǫ́DjangoÔÚÕâÀïÖ´ÐÐÁËÒ»ÌõINSERT SQLÓï¾ä
3£¬Ê¹ÓÃPublisher.objectsÊôÐÔ´ÓÊý¾Ý¿âµÃµ½¶ÔÏó£¬Ê¹ÓÃPublisher.objects.all()µÃµ½PublisherËùÓеĶÔÏóÁбí
ºǫ́DjangoÔÚÕâÀïÖ´ÐÐÁËÒ»ÌõSELECT SQLÓï¾ä
ʵ¼ÊÉÏÄã¿ÉÒÔͨ¹ýDjangoÊý¾Ý¿âAPI×öºÜ¶àÊÂÇ飬µ«ÊÇÎÒÃÇÏÈÀ´¿´Ò»¸öСÂé·³

Ìí¼ÓÄ£Ð͵ÄstringÏÔʾ
ÉÏÃæµÄÀý×ÓÖУ¬µ±ÎÒÃÇ´òÓ¡publishersÁбíʱÎÒÃǵõ½µÄ¶¼ÊÇһЩÎÞÓõÄÐÅÏ¢£¬ÎÒÃǺÜÄѽ«Publisher¶ÔÏóÇø±ð¿ª£º
[<Publisher: Publisher object>, <Publisher: Publisher object>]
ÎÒÃÇ¿ÉÒÔͨ¹ý¸øPublisher¶ÔÏóÌí¼ÓÒ»¸ö__str__()·½·¨À´ÇáËɽâ¾öÕâ¸öÎÊÌâ
__str__()·½·¨¸æËßPythonÔõÑùÏÔʾ¶ÔÏóµÄstringÏÔʾ£¬Äã¿ÉÒÔ¶¯ÊÖÀ´¿´¿´¸øÈý¸öÄ£ÐÍÌí¼Ó__str__()£º
Java´úÂë ¸´ÖÆ´úÂë
  1. class Publisher(models.Model):   
  2.     name = models.CharField(maxlength=30)   
  3.     address = models.CharField(maxlength=50)   
  4.     city = models.CharField(maxlength=60)   
  5.     state_province = models.CharField(maxlength=30)   
  6.     country = models.CharField(maxlength=50)   
  7.     website = models.URLField()   
  8.   
  9.     def __str__(self):   
  10.         return self.name   
  11.   
  12. class Author(models.Model):   
  13.     salutation = models.CharField(maxlength=10)   
  14.     first_name = models.CharField(maxlength=30)   
  15.     last_name = models.CharField(maxlength=40)   
  16.     email = models.EmailField()   
  17.     headshot = models.ImageField(upload_to='/tmp')   
  18.   
  19.     def __str__(self):   
  20.         return '%s %s' % (self.first_name, self.last_name)   
  21.   
  22. class Book(models.Model):   
  23.     title = models.CharField(maxlength=100)   
  24.     authors = models.ManyToManyField(Author)   
  25.     publisher = models.ForeignKey(Publisher)   
  26.     publication_date = models.DateField()   
  27.   
  28.     def __str__(self):   
  29.         return self.title  

Äã¿ÉÒÔ¿´µ½£¬__str__()·½·¨ÎªÁË·µ»ØÒ»¸östringÏÔʾ¿ÉÒÔ×öÈκÎËüÐèÒª×öµÄÊÂÇé
ÕâÀïPublisherºÍBookµÄ__str__()·½·¨¼òµ¥µÄ·µ»ØÁ˶ÔÏóµÄnameºÍtitle
µ«ÊÇAuthorµÄ__str__()¸ü¸´ÔÓÒ»µã£¬·µ»ØÁËfirst_nameºÍlast_nameµÄ×éºÏ
__str__()ΨһµÄÌõ¼þÊÇ·µ»ØÒ»¸östring£¬Èç¹û²»·µ»ØstringµÄ»°Èç·µ»ØÒ»¸öinteger
Python»á´¥·¢Ò»¸öTypeErrorÒì³££¬²¢´øÓГ__str__ returned non-string”ÐÅÏ¢
ΪÁËÈøĶ¯ÉúЧ£¬Í˳öPythonÈ»ºóʹÓÃpython manage.py shellÃüÁîÖØÐ½øÈë
(ÕâÊÇÈôúÂë¸Ä¶¯ÉúЧµÄ×î¼òµ¥µÄ·½Ê½)
ÏÖÔÚ£¬PublisherÁбí¶ÔÏó¸üÈÝÒ×Àí½â£º
Java´úÂë ¸´ÖÆ´úÂë
  1. >>> from books.models import Publisher   
  2. >>> publisher_list = Publisher.objects.all()   
  3. >>> publisher_list   
  4. [<Publisher: Apress>, <Publisher: O'Reilly>]  

È·ÈÏÄ㶨ÒåµÄÈκÎÄ£ÐͶ¼ÓÐÒ»¸ö__str__()·½·¨£¬²»½öÊÇʹÔÚÄã×Ô¼ºÊ¹Óý»»¥»·¾³Ê±¸ü·½±ã
Ò²ÒòΪµ±DjangoÔÚ¼¸¸öµØ·½ÐèÒªÏÔʾ¶ÔÏóʱ»áʹÓÃ__str__()µÄÊä³ö
×îºó£¬×¢Òâ__str__()ÊǸøÄ£ÐÍÌí¼ÓÐÐΪµÄºÃϰ¹ß
Ò»¸öDjangoÄ£ÐÍÃèÊöµÄ²»½ö½öÊÇÒ»¸ö¶ÔÏóÊý¾Ý¿â±í½á¹¹£¬ËüÒ²ÃèÊöÁ˶ÔÏóÖªµÀÔõÑùÈ¥×öµÄ¹¦ÄÜ
__str__()¾ÍÊÇÕâÑùµÄ¹¦ÄܵÄÒ»¸öÀý×Ó£¬Ò»¸öÄ£ÐÍÖªµÀÔõÑùÏÔʾËü×Ô¼º


°²»ÕлªµçÄÔѧУרҵְҵ¹æ»®Ê¦ÎªÄãÌṩ¸ü¶à°ïÖú¡¾ÔÚÏß×Éѯ¡¿
Ö÷Õ¾Ö©Öë³ØÄ£°å£º www.日本在线视频 | 欧美日韩精品一区二区天天拍小说 | 国产成人精品一区二区免费看京 | 久久久国产精品一区 | 91片看| 竹内纱里奈一88av在线 | 亚洲免费视频一区二区三区 | 国产伦一区二区三区色一情 | 99热国| 五月天婷婷色综合 | 91视频免费在线观看 | 国产三区在线观看 | 中国一级毛片在线播放 | 午夜免费播放观看在线视频 | 国产成人一区二区三区精 | 在线观看的毛片 | 国产精品禁漫天堂视频 | 天干夜天干夜天天免费视频 | 国产日韩久久久久 | 一级片在线观看网站 | 一区二区三区国产在线观看 | 国产精品一区不卡 | 91成人短视频在线观看 | 久久久久久久久久久久久久久国产 | 国产一级毛片国语版 | 5lⅴ精品国产91久久 | 午夜成人免费视频 | 国产精品日韩一区 | 在线观看人成 | 91免费网站在线观看 | 91精品久久久久久久久中文字幕 | 国产成人一区在线 | 免费真人毛片在线播放 | 91在现视频 | 91亚洲精品国产 | 99热精品在线观看 | 污视频网站入口 | 国产成人午夜精品影院游乐网 | 国产精品毛片一区二区三区 | 国产精品一区二区62 | 国产高清一区二区三区 |