Initializing a django project

Initializing a project

  1. install conda env for this project conda create --name mydjangoenv python=3.8
  2. Activate conda env and Install Django pip install django
  3. using django-admin startproject withme . to create the project in the current directory
  4. Run server by using python manage.py runserver
  5. Create a pages directory using python manage.py startapp pages (in conda env)
    add app config definition in withme/setting.py
  6. Create a new directory named template, which has two directories and base.html, pages(other pages) and partials(the partials of base.html)
    In withme/setting.py, set the path of template: 'DIRS': [os.path.join(BASE_DIR, 'template')]
  7. Create a new directory named static in withme folder, which includes Static files (CSS, JavaScript, Images)
    In withme/setting.py, set the path of static,
    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
    STATIC_URL = 'static/'
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'withme/static')
    ]
    
  8. run python manage.py collectstatic to create a static directory outside of withme folder, and add this folder to .gitignore
  9. In the first time, Add a page using 3 steps:
    1. In pages/views.py, write a view
      from django.http import HttpResponse
      def index(request):
          return HttpResponse("Hello")
      
      or render a page
      from django.shortcuts import render
      def index(request):
          return render(request, 'pages/index.html')
      
    2. Create a URLconf in pages/urls.py(need to add this file)
      from django.urls import path
      from . import views
      
      urlpatterns = [
          path('', views.index, name='index')
      ]
      
    3. Point the root URLconf at the pages.urls module. In withme/urls.py
      from django.contrib import admin
      from django.urls import path, include # add include
      
      urlpatterns = [
          path('', include('pages.urls')), # add a url to urlpatterns
          path('admin/', admin.site.urls),
      ]
      

Create a new app (posts)

  1. In template, create a folder called posts, which includes 3 files, ‘post’ ‘posts’ ‘search’

    • Each file using this code to init
      {% extends 'base.html' %}
      
      {% block content %}
      

      listings

      {% endblock %}
  2. python manage.py startapp posts tp create a new app posts

  3. add app config in withme/settings.py

    # Application definition
    INSTALLED_APPS = [
        'pages.apps.PagesConfig',
        'posts.apps.PostsConfig',
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
    ]
    
  4. In withme/urls.py, Add a URL to urlpatterns path('posts/', include('posts.urls')),

  5. Create a url.py file in post app, copy the code in pages/urls.py

Database setup

  1. install postgreSQL16 and pgadmin4

  2. open terminal: type in this

postgres=# \password postgres
Enter new password for user "postgres": 
Enter it again: 
postgres=# CREATE DATABASE withme OWNER postgres;
CREATE DATABASE
  1. create a server in pgadmin, and in withme database, set some infos

  2. pip install psycopg2
    pip install psycopg2-binary

  3. change data setting in withme/settings.py
    from

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

to

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'withme',
        'USER': 'postgres',
        'PASSWORD': '123456',
        'HOST': 'localhost'
    }
}
  1. pip install Pillow

  2. Design database

  3. pythpm manage.py makemigrations

  4. python manage.py migrate

  5. refresh servers in pgadmin, and check if they create table

Design database

  1. design schemas
  2. write models in (ex.) listings/models.py
  3. If you add foreignKey, you need to import other model

Create superuser

  1. go to localhost:8000/admin/

  2. python manage.py createsuperuser to create a super user called administrator and password is 123456

Register models with admin

  1. register models in listings/admin.py

  2. reload django administration page, you can see there is a listings model

Media folder

  1. add Media folder setting, just like static folder setting we did before

  2. add url to urlpatterns

in localhost/admin, add some realtors and listings, the image that have been uploaded will display inside media folder(auto-create)

Custom the admin page

go to template, create admin/base_site.html, and then custom
if you want to custom the data display, like not just show title(name) instead of other field, goto listings/admin.py

Pull data from listing model

listings/views.py
import models

你可能感兴趣的:(django,python,后端)