http___pythontr.blogspot.com.tr_2008_09_django-ile-anket-yapalm.html_1.xml
1.1 2.1 2.2 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 11.1 13.1 14.1 15.1 16.1 17.1 18.1 19.1 20.1 21.1 23.1 25.1 26.1 27.1 28.1 29.1 30.1 31.1 32.1 33.1 34.1 35.1 35.2 36.1 37.1 38.1 39.1 40.1 40.2 40.3 40.4 41.1
In the admin control of django I can`t add my models I`m trying to add my models ( the models are named "Question" and "Answer" respectively allocated in models.py archive) to the Django admin control center. So, to do that I make the following the settings in the following archives: INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.admindocs', 'questionsandanswers', After that I synchronize the database again to commit the change. python manage.py syncdb In the urls.py file I have the following setting: from django.conf.urls import patterns, include, include, url from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', url(r'^$', 'miprimerproyecto.views.home', name='home'), url(r'^blog/', include('blog.urls')), url(r'^admin/', include(admin.site.urls)), The admin.py file allocated inside of the models folders, has the following configuration: from django.contrib import admin from questionsandanswers.models import Question, Answer admin.site.register(Question) admin.site.register(Answer) After the I restart the server again: python manage.py runserver But the when I enter in the admin console I don' t see the models on the board. I would be very grateful If somebody could help me to solve this issue. 3 Answers I am currently logged with the superuser account, in the admin console. SA Instead of running python manage.py syncdb try python manage.py makemigrations and then run python manage.py migrate then start your server and check again You probably don't have permissions set for those models yet. You can check that by logging in with a superuser account, which has all permissions. If your superuser account shows the admin options for the new models but your regular account doesn't, that confirms that your regular account lacks permissions for those models. You can use the superuser account to add permissions to a group or directly to the account you'd like to use in the auth admin.
1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 16.1 17.1 18.1 19.1 20.1 21.1 22.1 23.1 24.1 26.1 27.1 28.1 29.1 30.1 31.1 32.1 33.1 34.1 35.1 36.1 37.1 38.1 39.1 40.1 43.1 44.1 45.1 46.1 47.1 50.1 51.1 52.1 53.1 54.1 55.1 56.1 57.1 58.1 59.1 60.1 61.1 62.1 63.1 64.1 65.1 66.1 67.1 68.1 69.1 70.1 71.1 72.1 73.1 74.1 75.1 77.1 78.1 79.1 80.1 81.1 82.1 83.1 84.1 85.1 86.1 87.1 88.1 89.1
Şimdi yeni bir proje başlatmak için gerekli olan komutumuzu veriyoruz. Deniz@ParMak ~ $ django-admin.py startproject OrnekProje OrnekProje adıyla yeni bir projeye başladık şimdi o dizine geçip uygulamamıza devam edelim. Deniz@ParMak ~ $ cd OrnekProje/ Şimdi de projemiz içerisinde yeni bir uygulama başlatalım. Not: Uygulamalar genellikle belirlir bir görevi yerine getirmek üzere kullanılırken. Projeyi ise içinde bir çok uygulamayı içerisinde düzenli şekilde barındıran uygulamalar bütünü olarak tanımlayabiliriz. Yine uygulamalarımızı bir kere oluşturup farklı projeler içerisinde de kullabiliriz. Deniz@ParMak OrnekProje $ python manage.py startapp anket Projemiz içerisinde anket isimli bir dizin oluştuğunu göreceksiniz içinde ise "__init__.py __init__.pyo models.py models.pyo views.py views.pyo " dosyaları mevcuttur. models.py dosyası bizim modellerimizi tanımlayacağımız dosya olacak. Anket uygulaması için 2 model oluşturacağız: Anket ve Secim. Anket içerisinde soru ve yayın tarihi yer alırken Secim içerisinde secenekler ve oylar alanları yer alacak. Bunun için aşağıda ki kodları models.py dosyamıza kaydediyoruz. from django.db import models class Anket(models.Model): soru = models.CharField(max_length=200) yayin_tarihi = models.DateTimeField('yayin tarihi') class Secim(models.Model): anket = models.ForeignKey(Anket) secenek = models.CharField(max_length=200) oylar = models.IntegerField() Şimdide bir üst dizinde yer alan settings.py dosyasında INSTALLED_APPS kısmını şu şekilde düzenliyoruz. INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'OrnekProje.anket', Şimdi veri tabanı ayarlarını düzenliyoruz. (Ayrıntılı bilgi için miratın yazını inceleyiniz. DATABASE_ENGINE = 'mysql' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. DATABASE_NAME = 'veritabanı_ismi' # Or path to database file if using sqlite3. DATABASE_USER = 'Deniz' # Not used with sqlite3. DATABASE_PASSWORD = 'şifrem' # Not used with sqlite3. DATABASE_HOST = '' # Set to empty string for localhost. Not used with sqlite3. DATABASE_PORT = '' # Set to empty string for default. Not used with sqlite3. Eğer Pardus kullanıyorsanız Tasma-Servis Yöneticisinden mysql_server'i çalıştırmayı unutmayınız. Ardından bakalım az önce models.py içerisine pythoncasını yazdığımız modellerin mysql karşılıkları nelermiş ? Deniz@ParMak OrnekProje $ python manage.py sql anket BEGIN; CREATE TABLE `anket_anket` ( `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `soru` varchar(200) NOT NULL, `yayin_tarihi` datetime NOT NULL CREATE TABLE `anket_secim` ( `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `anket_id` integer NOT NULL, `secenek` varchar(200) NOT NULL, `oylar` integer NOT NULL ALTER TABLE `anket_secim` ADD CONSTRAINT anket_id_refs_id_4e3e5fcb FOREIGN KEY (`anket_id`) REFERENCES `anket_anket` (`id`); COMMIT; Eğer benzer bir çıktı aldıysanız herşey yolunda devam edebiliriz. Eğer bir hata almadıysanız djangoya az önceki sql komutlarını çalıştırmasını söylemek için aşağıda ki komutu giriyoruz. python manage.py syncdb Çıktısında şöyle birşey göreceksiniz. Creating table anket_anket Creating table anket_secim Installing index for anket.Secim model Şu ana kadar veri tabanı ayarlarımız yaptık şimdi Admin paneliyle ilgili ayarlarımıza geçiyorum. Tekrar setting.py dosyasını açıp INSTALLED_APPS bölümüne az önceki örnekteki gibi 'django.contrib.admin' satırını ekliyoruz. Ardından tekrar python "manage.py syncdb" komutunu verip veri tabanını güncellemesini istiyoruz. Bu esnada sizden admin paneline girişte kullanmanız için bir kullanıcı adı ve şifresi isteyecek gerekli ayarları yapıp devam ediniz. Son olarakta urls.py dosyasının başında admin paneli için gerekli olan modülleri yüklemek için # işaretini kaldırıyoruz. Ve yine o dosyanın sonundaki admin alanını djangoya göstermek için oradan da # işaretini kaldırıyoruz. Yani dosyanın en son hali şu şekilde olacak. from django.conf.urls.defaults import * # Uncomment the next two lines to enable the admin: from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', # Example: # (r'^OrnekProje/', include('OrnekProje.foo.urls')), # Uncomment the admin/doc line below and add 'django.contrib.admindocs' # to INSTALLED_APPS to enable admin documentation: # (r'^admin/doc/', include('django.contrib.admindocs.urls')), # Uncomment the next line to enable the admin: (r'^admin/(.*)', admin.site.root), #burasını Şimdi django sunucusunu çalıştıralım. python manage.py runserver Şimdi tarayıcınızdan http://127.0.0.1:8000/admin/ adresini açıp neler olduğuna bakabilirsiniz :) Biraz kurcalayınca Gruplar,Kullanıcılar ve Siteler adında 3 bölüm göreceksiniz. Bunlar django ile öntanımlı olarak gelen admin paneli araçlarıdır. Fakat sanki bizim anket piyasada görünmüyor ? Bunun için yapmamız gereken tek birşey daha kaldı. Anket dizini içerisine admin.py adında bir dosya oluşturup içerisine şu satırları eklemek. from OrnekProje.anket.models import Anket from django.contrib import admin admin.site.register(Anket) Şimdi sunucumuzu yeniden başlatalım.(Ctrl+c) ile sonlandırıp. python manage.py runserver ile yeniden başlatabilirsiniz. Eğer bir aksilik çıkmadıysa artık admin panelinde anket uygulamımızı görmüşsünüzdür. Aslında buradan sonra anlatılacak pek birşey kalmıyor ama ben kısaca bir kaç ufak şeyden bahsedeyim. *Anketlere girdiğimizde görmüş olduğumuz form anket modelinde yazmış olduğumuz koda göre django tarafından otomatik olarak oluşturuluyor. *Anket modelinde oluşturduğumuz alanları hatırlayacak olursanız (DateTimeField, CharField gibi) django bunlara bakarak admin panelinde ona göre bir html üretiyor. *Örneğin DateTimeField ile gün ayarı yapabileceğimiz bir JavaScript kısayolunu bizim için panele ekliyor. Şimdilik bu kadarla kesiyorum. Admin panelinide kendi isteğimize göre özelleştirebiliyoruz. İlerleyen günlerde bu ufak tefek özelleştirmelerden de bahsedebilirim.