當在本地寫完項目,部署到服務器上調試的時候,不免會碰到代碼的修修改改,但因爲項目在服務器上,修改起來相對麻煩。各路大神或許有本身的方法去解決。這篇博客演示利用PyCharm的Deployment功能, 進行項目的本地編寫,遠程服務器同步修改代碼的功能。css
環境:html
本地:PyCharm2018.1 Professional + Python3.5.4 + win10python
遠程:VMware下的Centos7.3 + python3.5.4jquery
配置項目,跑起來就好了web
from django.shortcuts import render, redirect,HttpResponse from app01 import models # Create your views here. def login(request): if request.method == 'GET': return render(request,'login.html') elif request.method == 'POST': user = request.POST.get('user') pwd = request.POST.get('pwd') # 下面兩行代碼把數據保存到數據庫,而後有了用戶名和密碼,就能夠註釋掉了 # models.User.objects.create(user=user, pwd=pwd) # models.User.objects.all() # 查詢 user_obj = models.User.objects.filter(user=user, pwd=pwd) if user_obj: u = user_obj.first() print(u.user) print(u.pwd) request.session['a'] = user + pwd return redirect('/index') return HttpResponse('沒有用戶!請在views文件的第1六、17行註釋打開,註冊用戶,再註釋掉') def index(request): # a = request.session['a'] # print(a) if request.is_ajax(): print(request.POST.get('username')) return HttpResponse('AAAA') return render(request, 'index.html')
from django.conf.urls import url from django.contrib import admin from app01 import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^login/', views.login), url(r'^index/', views.index), ]
from django.db import models # Create your models here. class User(models.Model): user = models.CharField(max_length=32) pwd = models.CharField(max_length=32)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>login</title> </head> <body> <div> <form action="http://127.0.0.1:8000/login/" method="post"> {% csrf_token %} <input type="text" name="user" id="" placeholder="username"> <input type="password" name="pwd" id="" placeholder="password"> <input type="submit" name="" id="" value="提交"> </form> </div> </body> </html>
{% load static %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>index</title> </head> <body> <div> <h1>successful</h1> {% csrf_token %} <input type="button" name="" id="sure" value="提交"> </div> {#<script src="{% static 'ckeditor/ckeditor.js' %}"></script>#} <script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script> <script> var csrf = $("[name='csrfmiddlewaretoken']").val(); alert($('h1').text(),); $('#sure').click(function(){ $.ajax({ url:'/index/', type:'POST', data:{'username':$('h1').text(), "csrfmiddlewaretoken":csrf}, success:function (data) { alert(data); } }) }); </script> </body> </html>
# settings有三點須要注意,templates和把app添加到INSTALLED_APPS裏,而後是static。 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app01', ] TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], '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', ], }, }, ] STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'), )
1. 點擊+號,add server 2. 填寫server的name 3. 選擇傳輸類型 4. server配置完畢,點擊OK
1. 此時name和type能夠更改 2. 添加【SFTP host】,port端口通常不用動,host則是你的服務器ip 3. 添加服務器的username和password # 須要注意的是,user最好爲root用戶,由於會涉及到建立文件夾等操做 4. 點擊【Test SFTP connection】,成功則會出現successful的成功提示,錯誤的話,你就要檢查各選項是否添加不正確,服務器是否支持訪問
須要注意的是,root path爲項目未來要放在服務器的根目錄,後面的項目就在此目錄下
1. local path,本地的項目路徑 2. server端的path,點擊【···】選擇建立好的目錄, 這個path基於Connection下的root path 3. 選擇好目錄,點擊OK 4. 都設置完畢,點擊OK
1. add local path # 添加本地無需上傳的文件或目錄路徑 2. 添加結果如2所示 3. add deployment path # 拉代碼時,遠程項目不須要下載的文件或目錄路徑 4. remove path # 刪除路徑
1. create empty directories # 建立空目錄,若是遠程沒有這個目錄則建立 2. 同步方式,是選擇Ctrl+s仍是always或是never
PyCharm --> Tools --> Deployment --> Upload to test1(取決於你的項目名)
注意大坑來了!在點擊上傳時注意此時你的左側選擇的文件。如當我在選擇4時,點擊1 upload to test1,那麼只是把單個文件上傳到遠程的服務器,若是我選擇3,則只是把這個目錄及這裏面的文件上傳,因此,若是要上傳整個項目,那麼將鼠標點擊到2,項目根目錄,而後在點擊1上傳,這樣,排除那些你設定好的無需上傳的文件或目錄,整個項目都會上傳到遠程服務器。ajax
Ctrl+s. PyCharm --> Tools --> Deployment --> Optinos,當編輯完畢,Ctrl+S保存就會自動提交到服務器,咱們在前面有提到過這一步數據庫
3.2 代碼自動上傳方式2django
無需手動的Ctrl+S. PyCharm --> Tools --> Deployment --> Automatic Upload(always) 當選擇這種方式時,你在PyCharm中寫完代碼以後,一個很小的等待以後,新更新的代碼就會自動的同步到服務器,無需手動保存了服務器
PyCharm --> Tools --> Deployment --> Browse Remote Host 這樣,你PyCharm的右邊欄就會出現遠程服務器的目錄session
No.4 設置遠程解釋器
雖然此時咱們把代碼推到了遠程服務器,而且可以調試,可是,此時用的解釋器仍是咱們本地的解釋器,那麼,咱們如何設置使用遠程的解釋器呢?
歡迎指正
參考摘自: