Khóa học lập trình Python toàn tập Tiếng Việt

Leave a Comment

Khóa học lập trình Python toàn tập từ cơ bản đến nâng cao Tiếng Việt


Trong khóa học này sẽ giúp bạn chưa có kiến thức lập trình (Python from scratch) học lập trình Python cơ bản tới nâng cao. Bài giảng tiếng Việt vô cùng dễ hiểu, mỗi video tập trung vào trọng tâm chính.
python learning
Là một ngôn ngữ lập trình thông dịch do Guido van Rossum tạo ra năm 1990. Python hiện nằm trong top 5 ngôn ngữ lập trình phổ biến nhất trên thế giới. Đây cũng là ngôn ngữ nổi tiếng về sự chặt chẽ, nhanh, mạnh, và có mặt ở mọi hệ điều hành. Nhu cầu tuyển dụng các lập trình viên sử dụng Python ngày càng cao từ các doanh nghiệp phát triển hệ thống ERP (ODOO), các framework phát triển ứng dụng web như: Django, Pyramid, Flask, Bottle…
Seri lập trình Python có 89 video (source unica), trung bình video dài chỉ 7 phút thôi bao gồm:






  • Phần 1: Các khái niệm cơ bản trong lập trình Python.

  • Phần 2: Biểu thức trong lập trình Python.

  • Phần 3: Đối tượng String trong lập trình Python.

  • Phần 4: Đối tượng List, Tuples, Sets và Dictionary.

  • Phần 5: Thao tác với hàm tự định nghĩa trong lập trình Python.

  • Phần 6: Hướng đối tượng và thao tác với File trong Python.

  • Phần 7: Tìm hiểu về module và quản lý lỗi trong Python.

  • Phần 8: Thao tác làm việc với cơ sở dữ liệu.

  • Phần 9: Tìm hiểu thao tác làm việc với mảng qua thư viện Numpy.

  • Phần 10: Thao tác quản lý dữ liệu với Pandas.

  • Phần 11: Bài tập tình huống.







Tham khảo các bài viết về lập trình Python: https://shareeverythings.com/category/lap-trinh/python/



Học hành, Lập trình
Lập trình, Python
Xem Tiếp

Tutorial React Testing with Jest and Enzyme

Leave a Comment

Khóa học React Testing with Jest and Enzyme


Lập trình React, Redux, Hooks and Context Code với Test Driven Development(TDD). Khóa học dưới đây tập trung vào Test trên React nên dành cho các bạn nào đã lập trình qua JavaScript và React / Redux nhé. (Source udemy)

Xem thêm:React Hooks cách dùng các hàm thông dụng cùng với Typescript


Code source:


Course Resources: React Testing with Jest and Enzyme
Note: These are in the order they are presented in the course, with the exception of putting the course repo first.
GitHub Repository for the course
https://github.com/flyrightsister/udemy-react-testing-projects
Creating a React app from scratch
https://medium.com/@JedaiSaboteur/creating-a-react-app-from-scratch-f3c693b84658
https://jestjs.io/docs/en/webpack.html#handling-static-assets
Configuring Jest
https://facebook.github.io/jest/docs/en/configuration.html
Enzyme shallow wrapper documentation
http://airbnb.io/enzyme/docs/api/shallow.html
Enzyme shallow wrapper .find() documentation
http://airbnb.io/enzyme/docs/api/ShallowWrapper/find.html
Enzyme shallow wrapper selector documentation
http://airbnb.io/enzyme/docs/api/selector.html
Enzyme shallow wrapper state documentation
http://airbnb.io/enzyme/docs/api/ShallowWrapper/setState.html
http://airbnb.io/enzyme/docs/api/ShallowWrapper/state.html
Jest expect API
https://facebook.github.io/jest/docs/en/expect.html
Bootstrap 4 “get started” docs
https://getbootstrap.com/docs/4.0/getting-started/introduction/
Enzyme shallow wrapper .prop() method
http://airbnb.io/enzyme/docs/api/ShallowWrapper/prop.html
Kent Dodds Blog Post for Context with Embedded State
https://kentcdodds.com/blog/application-state-management-with-react


Học hành, Lập trình
Lập trình, React
Xem Tiếp

Lập trình web Python Django RESTful API Framework

Leave a Comment

Hướng dẫn lập trình CRUD Restful API với Django Python dễ dàng.


Ứng dụng các công nghệ để lập trình web với python:


  • Python

  • Django REST Framework

  • SQL lite

  • Visual Studio Code

  • Python extension by Microsoft

Tại sao dùng Django REST Framework?


Django REST Framework (REST Framework) cung cấp 4 tính năng:


  1. Browsable API

  2. Auth Support

  3. Throttling: giới hạn quyền truy cập của người dùng.

  4. Serializers: chuyển đổi model thành json object.


Nếu bạn là người bắt đầu với lập trình web python thì đừng bỏ lỡ bài viết:


Django Project Setup


Xem thêm:


Tạo thư mục django-employee và kích hoạt virtualenv:


$ mkdir django-employee
$ cd django-employee
$ python -m venv env

Nhấn Ctrl + Shift + P chọn Python: Selection interpreter và chọn bản python bạn muốn dùng. Chi tiết hơn bạn tham khảo bài viết này

Lúc này sẽ xuất hiện (env) ở command line.
django_helloworld (5)


(env)$ pip install django 
(env)$ django-admin startproject myemployee

Cấu trúc dự án lúc này:



└── myemployee
├── manage.py
└── myemployee
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py


Cấu hình cho Django REST Framework


Chúng ta sẽ tạo app employee.


(env)$ cd myemployee
(env)$ python manage.py startapp employee
(env)$ pip install djangorestframework

Bây giờ chúng ta cấu hình cho Django project dùng REST Framework.

Đầu tiên, bạn thêm employee và rest_framework vào mục INSTALLED_APPS trong myemployee/myemployee/settings.py:


INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'employee',
'rest_framework'

]

Tiếp theo, định nghĩa settings cho REST Framework, thêm code bên dưới vào file settings.py :


REST_FRAMEWORK = 
# Use Django's standard `django.contrib.auth` permissions,
# or allow read-only access for unauthenticated users.
'DEFAULT_PERMISSION_CLASSES': [],
'TEST_REQUEST_DEFAULT_FORMAT': 'json'

Điều này sẽ không giới hạn việc truy cập tới API và thiết lập mặc định trả về JSON cho tất cả các request.

Do mình develop ở localhost nên không cần đòi hỏi giới hạn truy cập. Nhưng nếu ở production thì phải giới hạn việc truy cập tới endpoints. Xem thêm ở đây.

Cấu trúc project hiện tại thế này:



└── myemployee
├── manage.py
├── employee
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
└── myemployee
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py


Database mình sẽ dùng mặc định là SQLite của Django đã hỗ trợ nên không cấu hình phần này.

Tiếp theo, chúng ta sẽ định nghĩa model Employee trong file django-employee/myemployee/employee/models.py:


from django.db import models
class Employee(models.Model):
name = models.CharField(max_length=255)
age = models.IntegerField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def get_info(self):
return 'Name: ' + self.name + ' age: ' + self.age
def __repr__(self):
return self.name + ' is added.'

Thực thi  migration cho database:


(env)$ python manage.py makemigrations
(env)$ python manage.py migrate

Bạn hãy check database db.sqlite3 sẽ thấy thay đổi.


Serializers


Trước khi tạo API, chúng ta sẽ định nghĩa serializer cho model Employee. Hiểu đơn giản serializers là cách chúng ánh xạ các field trong class model (chuyển từ class model sang json và ngược lại).

Thêm code django-employee/myemployee/employee/serializers.py:


from rest_framework import serializers
from .models import Employee
class EmployeeSerializer(serializers.ModelSerializer):
class Meta:
model = Employee
fields = ('name', 'age', 'created_at', 'updated_at')

ModelSerializer sẽ ánh xạ tương ứng các field cho model Employee.

Bây giờ là phần quan trọng, tiến hành làm RESTful API nào !


Cấu trúc restful (xem thêm)



























EndpointHTTP MethodCRUD MethodResult
employeesGETREADGet all employee
employees/:idGETREADGet a single employee
employeesPOSTCREATEAdd a single employee
employees/:idPUTUPDATEUpdate a single employee
employees/:idDELETEDELETEDelete a single employee

Trước khi implement API routes chúng ta sẽ định nghĩa skeleton để return empty và map chúng với URL tương thích trong file django-employee/myemployee/employee/views.py:


from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework import status
from .models import Employee
from .serializers import EmployeeSerializer
@api_view(['GET', 'DELETE', 'PUT'])
def get_delete_update_employee(request, pk):
try:
employee = Employee.objects.get(pk=pk)
except Employee.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
# get details of a single employee
if request.method == 'GET':
return Response()
# delete a single employee
elif request.method == 'DELETE':
return Response()
# update details of a single employee
elif request.method == 'PUT':
return Response()
@api_view(['GET', 'POST'])
def get_post_employee(request):
# get all employee
if request.method == 'GET':
return Response()
# insert a new record for a employee
elif request.method == 'POST':
return Response()

Tạo URLs đúng với views trong file django-employee/myemployee/employee/urls.py:


from django.conf.urls import url
from . import views
urlpatterns = [
url(
r'^api/employee/(?P<pk>[0-9]+)$',
views.get_delete_update_employee,
name='get_delete_update_employee'
),
url(
r'^api/employee/$',
views.get_post_employee,
name='get_post_employee'
)
]

Đồng thời update file django-employee/myemployee/myemployee/urls.py:


from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^', include('employee.urls')),
url(
r'^api-auth/',
include('rest_framework.urls', namespace='rest_framework')
),
url(r'^admin/', admin.site.urls),
]

Browsable API


Tất cả các route đã map với function, chúng ta sẽ test thử REST Framework’s Browsable API và xem chúng làm việc thế nào nha.
Tại Command line gõ:


(env)$ python manage.py runserver

Truy cập: http://localhost:8000/api/employee

Bạn sẽ thấy giao diện HTML với API response.
pythonrestfull

Bây giờ chúng ta sẽ bổ sung cho đủ các hàm trong file views.


Routes


GET ALL


Update code ở file employee/views.


@api_view(['GET', 'POST'])
def get_post_employee(request):
# get all employee
if request.method == 'GET':
employees = Employee.objects.all()
serializer = EmployeeSerializer(employees, many=True)
return Response(serializer.data)
# insert a new record for a employee
elif request.method == 'POST':
return Response()

POST


Inserting employee cũng có 2 trường hợp: hợp lệ và không hợp lệ.


@api_view(['GET', 'POST'])
def get_post_employee(request):
# get all employee
if request.method == 'GET':
employees = Employee.objects.all()
serializer = EmployeeSerializer(employees, many=True)
return Response(serializer.data)
# insert a new record for a employee
if request.method == 'POST':
data =
'name': request.data.get('name'),
'age': int(request.data.get('age'))

serializer = EmployeeSerializer(data=data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Tại đây, chúng sẽ chèn dòng mới bởi serializing và xác nhận field hợp lệ trước khi chèn vào database.

Truy cập: http://localhost:8000/api/employee/ và thêm data mẫu bên dưới.



"name": "Lam",
"age": 4

GET Single


Get employee có 2 trường hợp:


  1. Hợp lệ: employee tồn tại

  2. Không hợp lệ: employee không tồn tại

@api_view(['GET', 'UPDATE', 'DELETE'])
def get_delete_update_employee(request, pk):
try:
employee = Employee.objects.get(pk=pk)
except Employee.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
# get details of a single employee
if request.method == 'GET':
serializer = EmployeeSerializer(employee)
return Response(serializer.data)

 


PUT


Method PUT để cập nhật 1 employee


@api_view(['GET', 'DELETE', 'PUT'])
def get_delete_update_employee(request, pk):
try:
employee = Employee.objects.get(pk=pk)
except Employee.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
# get details of a single employee
if request.method == 'GET':
serializer = EmployeeSerializer(employee)
return Response(serializer.data)
# update details of a single employee
if request.method == 'PUT':
serializer = EmployeeSerializer(employee, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_204_NO_CONTENT)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
# delete a single employee
elif request.method == 'DELETE':
return Response()

DELETE


To delete a single record, an ID is required:


@api_view(['GET', 'DELETE', 'PUT'])
def get_delete_update_employee(request, pk):
try:
employee = Employee.objects.get(pk=pk)
except Employee.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
# get details of a single employee
if request.method == 'GET':
serializer = EmployeeSerializer(employee)
return Response(serializer.data)
# update details of a single employee
if request.method == 'PUT':
serializer = EmployeeSerializer(employee, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_204_NO_CONTENT)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
# delete a single employee
if request.method == 'DELETE':
employee.delete()
return Response(status=status.HTTP_204_NO_CONTENT)

Xong! Bạn có thể thử với các Restful API như mục trên, danh sách employee api click đây.
Mình đã Hướng dẫn lập trình web Python CRUD Restful API với Django Python qua dự án Employee dễ dàng. Các bạn có thắc gì cứ bình luận bên dưới nhé!


Download source code Python web:


Employee project



Học hành, Lập trình
Lập trình, Python
Xem Tiếp

React Hooks cách dùng các hàm thông dụng cùng với Typescript

Leave a Comment

Hướng dẫn React Hooks với TypeScript – Hướng dẫn dùng các tính năng mới qua ví dụ dễ hiểu


React Hooks cách dùng các hàm thông dụng cùng với Typescript


Hooks được thêm vào React 16.8 tại hội thảo React 2018. Tính năng mới bổ sung khá tuyệt vời giúp cho Functional Component hay Stateless Component có thể làm mọi thứ mà Class Component làm được.

Bài viết mình tóm gọn nên phù hợp cho các bạn đã biết React nhé ❤️. Sau đây mình tóm tắt nhanh cách dùng một số hàm chính của React Hook: useState, useEffect, useRef, useMemo, useCallback.


useState


useState đây là hàm mà bạn sẽ dùng rất nhiều. Thay vì dùng this.state từ class components, bạn có thể truy cập state hiện tại với 1 giá trị khởi tạo nó và 1 hàm gọi để thay đổi state.

Ví dụ:




import React from 'react';
// Khởi tạo props initial = 0
const Counter:FC< initial?: number > = ( initial = 0 ) =>
// clicks là state, setClicks là hàm setState cho state clicks
const [clicks, setClicks] = React.useState(initial);
return <>
<p>Clicks: clicks</p>
<button onClick=() => setClicks(clicks+1)>+</button>
<button onClick=() => setClicks(clicks-1)>-</button>
</>



useEffect


useEffect liên quan tới side effects. Việc thêm event listeners, thay đổi document, fetching data… sẽ ảnh hưởng tới React lifecycle component (componentDidUpdate, componentDidMount, componentWillUnmount). useEffect dùng để tối ưu hóa việc gọi hàm và clean up chúng. Các hàm này chỉ có trong class component. useEffect giúp bạn làm điều này!  Phương thức này có 2 tham số:


  • 1 hàm anonymous không có tham số.

  • 1 mảng chứa tham số, hàm trên chỉ được gọi khi tham số này thay đổi.



// Giả sử có state là name. document.title sẽ đổi khi name thay đổi
const [name, setName] = React.useState('Stefan');
useEffect(() =>
document.title = `Hello $name`;
, [name])



Không có hàm componentWillUnmount cho functional component. Làm thế nào để clean up ?
Việc return sẽ thực hiện hàm removeEventListener sẽ tương tự cho componentWillUnmount.




React.useEffect(() => 
const handler = () =>
document.title = window.width;

window.addEventListener('resize', handler);
// ⚡️ sẽ không compile
return true;
// ✅ sẽ compile
return () =>
window.removeEventListener('resize', handler);

)



useContext


useContext cho phép bạn truy cập thuộc tính context bất cứ đâu trong components. Nó tương tự Context.Consumer trong class components:




import React, useContext from 'react';
// Khởi tạo đối tượng context lang với type là string
export const LanguageContext = React.createContext( lang: 'en' );
const Display = () =>
// Gọi lang với type là string
const lang = useContext(LanguageContext);
return <>
<p>Your selected language: lang</p>
</>




useRef


Giờ đây bạn có thể dùng useRef sẽ thay thế cho this.myRef = React.createRef() trong class component. useRef dùng để truy cập các đối tương bên trong HTML Node.




import React from 'react';
function TextInputWithFocusButton()
// Thường khởi tạo refs với giá trị null
const inputRef = React.useRef(null);
const onButtonClick = () =>
// (?) Typescript sẽ quăng lỗi vì inputRef có thể null. Fix code bên dưới nhé
inputRef.current.focus();
;
return (
<>
<input ref=inputRef type="text" />
<button onClick=onButtonClick>Focus the input</button>
</>
);




Lưu ý với typescript:


  • Phải khởi tạo refs là null.

  • inputRef có thể null. TypeScript cần check là inputRef.current not null mới cho gọi hàm focus().



function TextInputWithFocusButton() 
// Báo cho typescipt biết type cụ thể của refs là HTMLInputElement
const inputRef = useRef<HTMLInputElement>(null);
const onButtonClick = () =>
// Kiểm tra inputRef tồn tại trước khi dùng hàm bên trong nó ✅
if(inputRef && inputRef.current)
inputRef.current.focus();

;
return (
<>
<input ref=inputRef type="text" />
<button onClick=onButtonClick>Focus the input</button>
</>
);



useMemo


useMemo cũng tương tự useEffect nó chỉ chạy khi có tham số thay đổi. useMemo dùng như là pure function để tạo 1 phần HTML cho component.

Lưu ý khi dùng với TypeScript, useMemo sẽ trả về type object giống với hàm bên trong trả về.




const getStatus = React.useMemo(() => (status ? <Tag className=statusClass>status</Tag> : ''), [status]);
render()
return <div>getStatus</div>


Trong ví dụ trên: getStatussẽ trả về JSX.Element do hàm anonymous bên trong trả về JSX.Element. Hàm này chỉ render lại khi status thay đổi.


useCallback





useCallback cũng tương tự useMemo. Nhưng nó trả về callback function, not a value.




const memoCallback = React.useCallback((a: number) => 
// doSomething
, [a])
// ⚡️ Không compile, vì không có tham số.
memoCallback();
// ✅ Compile
memoCallback(3);



Xong. Mình đã hướng dẫn bạn cách dùng một số hàm thông dụng trong React Hooks. Bạn có thắc mắc gì thì đừng ngần ngại mà bình luận dưới nhé!


 



Học hành, Lập trình
Lập trình, React
Xem Tiếp

Cấu trúc RESTful API là gì ?

Leave a Comment

Cấu trúc RESTful API là gì ?


RESTful Structure


Kết quả hình ảnh cho restful api

Xu hướng lập trình Single Page như hiện nay nên hầu hết response trả về json. Quy ước chung cho url thế nào để gửi request và trả về json data. Trong Restful API, endpoints tức URLs sẽ quy ước cấu trúc API và cái mà người dùng cuối truy cập data từ ứng dụng thông qua phương thức HTTP: GET, POST, PUT, DELETE. Cụ thể bên dưới.

Ví dụ:

Mình lấy ví dụ để dễ hiểu, giả sử mình có model employee. Khi bạn gửi request /employees. Server sẽ trả về danh sách employee.



























EndpointHTTP MethodCRUD MethodResult
employeesGETREADLấy tất cả employee
employees/:idGETREADLấy 1 employee
employeesPOSTCREATEThêm 1 employee
employees/:idPUTUPDATECập nhật 1 employee
employees/:idDELETEDELETEXóa 1 employee

Các bài viết lập trình web dùng Restful API:


Lập trình Spring Boot CRUD đơn giản MyEmployee


Hướng dẫn lập trình CRUD Restful API với Django Python dễ dàng. (updating)



 



Học hành, Lập trình
Phần mềm PC
Xem Tiếp

Lập trình website Python với Django Framework

Leave a Comment

Tạo website hello world đơn giản với Django Framework


Python không có sẵn khả năng làm web, chính vì thế, chúng ta cần phải có một số module nhất định để lập trình web với Python.
django_helloworld (7)

Với nhu cầu ngày càng đa dạng, lập trình viên nên chuyển sang một số framework Python như Django hay Flask để có thể cho ra các ứng dụng web phức tạp.

Các dịch vụ nổi tiếng như Instagram, Reddit, Quora và Disqus đều được phát triển trên nền Python.


Django framework là gì?


Django là một web framework khá nổi tiếng được viết hoàn toàn bằng ngôn ngữ Python. Nó không phải là một micro-framework như Flask, mà là một framework với đầy đủ các thư viện, module hỗ trợ các web-developer.

Django được so sánh khá nhiều với Ruby on Rails.


Tại sao nên dùng Django framework


Nếu bạn đang muốn xây dựng 1 website một cách nhanh nhất, thì Django luôn là một trong những lựa chọn hàng đầu mà bạn nên cân nhắc.

Django framework có đầy đủ các yếu tố phục vụ cho người bắt đầu(starter):


  • Nhanh: Chỉ vài dòng code là bạn có ngay trang web. Do Django có sẵn các thư viện về user authentication, content admin, site maps, RSS feed v.v…

  • Đảm bảo về tính bảo mật: Hạn chế các lỗi bảo mật thông thường như SQL Injection, cross-site scripting, cross-site request forgery hay clickjacking nữa.

  • Khả năng mở rộng tốt: Django framework có thể đáp ứng lượng traffic lớn, nghĩa là bạn không cần phải lo lắng về khả năng mở rộng sản phẩm của mình nữa.

  • Tính linh hoạt: Xây dựng CMS, hoặc Ecommerce Website, hay kể cả Social Network, Scientific Computing Platforms, tất cả đều có thể với Django framework.

Xem thêm: Hướng dẫn cài đặt Python trên Windows Linux đơn giản


Cài đặt Django trên Windows


  • Nhấn tổ hợp phím Window + R,

  • Gõ cmd nhấn enter để mở một cửa sổ terminal, sau đó gõ:

pip install django

Cài đặt Django trên Linux, Mac


  • Tổ hợp phím Ctrl + Alt + T để mở Terminal

  • Gõ:

sudo apt-get install python3-django

Chờ một lát để quá trình cài đặt diễn ra.

Bắt tay vào chủ đề chính nào, bây giờ mình sẽ


Hướng dẫn tạo 1 website hello world đơn giản với Django Framework


Công cụ:


  • Visual Studio Code

  • Python Extension

Đầu tiên, bạn tạo folder project đặt tên helloworldpython
django_helloworld (2)

Tại thư mục đó mở Visual Studio Code (đã cài extension Python)


Tạo môi trường ảo (virtual environment) để Django được cài vào đó.


Sử dụng môi trường ảo sẽ tránh cài đặt Django vào môi trường Python global và cung cấp cho bạn quyền kiểm soát chính xác các thư viện được sử dụng trong một ứng dụng. Một môi trường ảo cũng giúp bạn dễ dàng tạo tệp requirements.txt (giống file pom.xml trong maven Java)

Thay vì mỗi lần cài bạn phải cài từng thư viện một. Bạn không thể nhớ hết được và phải gõ nhiều lần. File requirements.txt sẽ giúp bạn tránh điều này.

Bạn có thể tạo file requirements.txt thủ công nhưng mình khuyến nghị dùng lệnh  pip freeze tạo tự động dựa trên các thư việc đã được cài trong môi trường ảo.
Tạo môi trường ảo(virtual environment) với tên env:


# macOS/Linux
sudo apt-get install python3-venv # If needed
python3 -m venv env
# Windows
python -m venv env

django_helloworld (3)
Tạo file requirements.txt:


  • Nhấn Ctrl+Shift+` để mở terminal.

  • Gõ: pip freeze > requirements.txt và chèn Django==2.2.4 vào file đó.

Kích hoạt môi trường ảo:

Trong Visual Studio Code, View > Command Palette or (Ctrl+Shift+P) > Chọn Python: Select Interpreter

Chọn env vừa tạo
django_helloworld (4)
Sau khi kích hoạt môi trường bạn sẽ thấy (env) trước dòng lệnh terminal
Cài đặt thư viện vào môi trường ảo vừa chọn:
pip install -r requirements.txt

Nếu bạn gặp lỗi SSL thì chạy lệnh sau:
pip install -r requirements.txt --trusted-host pypi.org
django_helloworld (5)


Hoặc bạn không dùng file requirements.txt thì install django với lệnh: pip install django


Tạo Django Project


django-admin startproject web_project .

dấu . cuối để cài project vào ngay thư mục hiện tại.
django_helloworld (6)

Sau khi chạy lệnh trên sẽ có 1 số file:
manage.py: File quản trị dòng lệnh Django cho dự án. Ví dụ khi bạn start project django: python manage.py runserver

Một thư mục con có tên web_project, chứa các tệp sau:


  • __init__.py: một tệp trống cho Python biết thư mục này là gói Python.

  • settings.py: File cấu hình cho project Django mà bạn sẽ sửa đổi trong quá trình phát triển ứng dụng web.

  • urls.py: chứa danh sách url cho project Django giống với controller bên Java, mà bạn cũng sửa đổi trong quá trình phát triển.

  • wsgi.py: File cấu hình máy chủ web tương thích WSGI. Bạn không cần để ý nó trong bài viết này.

Chưa cần làm gì hết, hãy chạy project của bạn lên nào:
python manage.py runserver

Mặc định là port 8000. Bạn muốn port khác 5000 chẳng hạn, dùng lệnh này:  python manage.py runserver 5000

 

Giữ Ctrl và nhấn vào link http://127.0.0.1:8000/ để chạy trang web.

Tèn ten! Một trang web khá đẹp mặc định của Django xuất hiện !!!
django_helloworld (7)

Bây giờ chúng ta muốn in ra dòng chữ Hello, Django! from ShareEverythings.com thay vì trang mặc định, làm như sau.


Tạo app cho project Django


Gõ:


python manage.py startapp helloqlam

Sau khi chạy lệnh, bạn sẽ thấy có 1 thư mục là helloqlam, trong đó có:


  • admin.py: quản lí trang admin cho app

  • models.py: model của app

  • apps.py: cấu hình cho app, ví dụ tên định danh của app

  • views.py: chứa các hàm xử lí khi url hay controller gọi, file này giống service bên Java

Chỉnh sửa file views.py, để in ra hello world ở home page


from django.shortcuts import render
from
django.http import HttpResponse
def home(request):
return HttpResponse("Hello, Django! from ShareEverythings.com")

Tạo file urls.py với nội dung bên dưới để gọi hàm home trong file views.py trên


from django.urls import path
from helloqlam import views
urlpatterns = [
path("", views.home, name="home"),
]

Trong thư mục web_project, chỉnh sửa file urls.py,để gọi urls từ app helloqlam


from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path("", include("helloqlam.urls")),
]

Lưu hết lại, và chạy project nào:
python manage.py runserver

Mở trình duyệt với: http://127.0.0.1:8000/. Bạn sẽ thấy Hello, Django! from ShareEverythings.com
django_helloworld (1)


Video hướng dẫn chi tiết Tạo website Django Framework trong 5 phút:




Xong rồi! Mình đã hướng dẫn các bạn lập trình website Python với Django Framework thông qua hello world app đơn giản.

Bạn có thắc mắc thì bình luận bên dưới nhé!



Django Framework, Học hành, Lập trình
Lập trình, Python
Xem Tiếp

Hướng dẫn cài đặt môi trường lập trình Python

Leave a Comment

Cài đặt môi trường lập trình Python cơ bản


Python là một ngôn ngữ lập trình thông dịch (interpreted), hướng đối tượng (object-oriented), và là một ngôn ngữ bậc cao (high-level). Python hỗ trợ các module và gói (packages), khuyến khích chương trình module hóa và tái sử dụng mã.


Python là ngôn ngữ mã nguồn mở


  • Cài đặt Python dùng giấy phép nguồn mở ngay cả trong việc thương mại.

Python là ngôn ngữ có khả năng chạy trên nhiều nền tảng. 

  • Python có cho mọi hệ điều hành: Windows, Linux/Unix, Mac…


Python dễ dàng kết nối với các thành phần khác:



  • Có thể viết các thư viện trên C/C++ để nhúng vào Python và ngược lại.



Python rất đơn giản và dễ học


  • Python có cộng đồng lập trình rất lớn, hệ thống thư viện chuẩn, và cả các thư viện mã nguồn mở được chia sẻ trên mạng.

Cài đặt Python trên Windows



Tải về và cài đặt Python cho windows


Python 3.7.2 là bản mới nhất hiện tại bài viết

Việc cần làm đầu tiên của chúng ta là cài đặt môi trường làm việc của Python lên máy tính.


  1. Truy cập https://www.python.org/ download phiên bản mới nhất của python về máy.

  2. Tải về được 1 file name python-x.x.x.exe, double click và cài đặt như bình thường,pythonsetup

  3. Trong quá trình cài đặt nhớ tick vào dòng Add python 3.x to PATH để sau đó đỡ phải mở Environment Variables để cài đặt Path cho Python.

Kiểm tra python đã cài đặt thành công hay chưa bằng cách


  1. Nhấn Window + R,

  2. Gõ cmd, một màn hình terminal xuất hiện, các bạn

  3. Gõ: python

cmd


Cài đặt Python 3.6 trên Linux


Mở Terminal: Ctrl + Alt + T


sudo add-apt-repository ppa:jonathonf/python-3.6

Nhập password nếu có.
Nhập tiếp các lệnh:


sudo apt-get update
sudo apt-get install python3.6

Nếu gặp lỗi

E: Could not get lock /var/lib/dpkg/lock – open (11: Resource temporarily unavailable)

E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
thì nhập


sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
sudo dpkg --configure -as

Cài đặt thành công. Bạn đã cài đặt 1 loạt các gói python. Bây giờ chúng ta kiểm tra các bản đã cài.

Bạn sẽ có 3 phiên bản Python, Dùng các lệnh để xem phiên bản.
python-versions-600x143
Mình đã hướng dẫn các bạn cài đặt python trên Windows và Linux. Chúc các bạn thành công !

 



Django, Flask, Học hành, Lập trình, Linux
Lập trình, Python
Xem Tiếp