python+Django創建購物網站(一)


1.凡事預則立不預則廢。。工作七八個月,接觸的全是Java,Java博大精深,到現在沒學好。自己反而完全和python隔離了,再不練練,估計要廢。

2.下載安裝pycharm社區版,因為免費,安裝Django框架,配置環境變量。

https://www.cnblogs.com/fanyuchen/p/6918735.html

由於我之前已經安裝好了 現在查看一下安裝目錄。

直接查看系統的環境變量 D:\software\nodejs\node_global;%MYSQL_HOME%\bin;D:\python_program\Lib\site-packages\django

可以看到最后一個為Django的安裝路徑。D:\python_program\Lib\site-packages\django

3.命令行新建Django項目。創建在D盤,對應項目名稱為myproject_shopping。

但是在對應的目錄下找不到此項目,

---------------------------------------------------------------------------------------------------------實戰篇--------------------------------------------------------------------------------------

一、視圖(包含函數視圖和類視圖)比較簡單,不做贅述。

需要兩個關鍵的類:urls和view

 

二、URL映射。

1.路徑函數,path(route,view,kwargs,name)和re_path(route,view,kwargs,name)一個是正常匹配,一個是正則表達式匹配。

其中正則表達式,可進行分組,傳參,傳的參數,可以運用到視圖函數中,可獲取相應的視圖。

 2.正則表達式(正則表達式內容比較多,可以私下多看看)

3.路徑轉換器

路徑中可以捕獲路徑中的數值,路徑轉換器可以將捕獲的數值進行轉換為有效參數,傳遞給函數視圖。

urlpatterns = [
    path('hello1/<str:name>/', views.hello1, name='hello'),
    path('hello2/<slug:name>/', views.hello2),
    path('hello3/<uuid:name>/', views.hello3),
    path('hello4/<path:name>/', views.hello4),
    path('<int:book_id>/', views.show_book_id),
]
預定義路徑轉換器:
str:匹配除路徑分隔符(/)之外的任何非空字符串。
int:匹配零或任何正整數。返回一個int。
slug:匹配由ASCII字母或數字組成的任何字符串,然后這些字符串可以通過連字符(-)和下划線字符(_)連接。例如, building-your-1st-django-site。
uuid:匹配格式化的UUID。必須包含連字符(-),並且字母必須為小寫。例如,075194d3-6885-417e-a8a8-6c931e272f00。
path:匹配任何非空字符串,包括路徑分隔符(/)。

4.重定向

(1)站外重定向,訪問站內的127.0.0.1;8080 可以返回項目外的一個鏈接。

通過在函數視圖中,使用redirect函數返回,redirect函數返回一個應答對象。
示例(跨站重定向):
def hello(request):
    return redirect('http://www.sina.com')
 
示例(網站內重定向):

5.模板。

一般情況下,一個項目只有一個settings,在相應的myproject目錄下。當然,特殊情況下,某個應用服務下也可以有settings。

(1)注冊Books應用。

在settings里面進行注冊,books.apps.BooksConfig(books是它的包名,apps是模塊名,BooksConfig是它的類名。)注冊完以后,設置模板

 

 

 

 2.Books應用模板設置。

myproject/settings.py修改TEMPLATES:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
BACKEND:設置采用哪個模板引擎。django.template.backends.django.DjangoTemplates(django自己的模板)和django.template.backends.jinja2.Jinja2(Jinja2模板)
DIRS:設置模板文件存儲文件夾列表。
APP_DIRS:設置是否在應用中搜索模板文件。(true表示在當前應用中搜索模板文件。)

3.創建模板文件夾templates

 

 1、沒有使用模板
# 沒有使用模板
def show_book_info1(request):
    s = '''
    <html>
        <body>
            <h3>書名:《Python從小白到大牛》</h3>
            <h3>作者:關東升</h3>
        </body>
    </html>
    '''
    return HttpResponse(s)
 
2、使用模板
# 在函數視圖中使用模板
def show_book_info2(request):
    context = {'book_name': 'Python從小白到大牛', 'author': '關東升'}
    return render(request, 'book.html', context)


# 類基礎視圖中使用模板
class MyView(TemplateView):
    template_name = 'book.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['book_name'] = 'Python從小白到大牛'
        context['author'] = '關東升'
        return context
在函數視圖中使用模板使用render,他是渲染函數,context是模板上下文。
在類基礎視圖中使用模板時,需要繼承TemplateView父類,重寫get_context_data方法。在template_name屬性中指定模板名。
 
模板文件book.html:
<html>
    <body>
        <h3>書名:《{{ book_name }}》</h3>
        <h3>作者:{{  author }}</h3>
    </body>
</html>
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM