YouDev a été publié. 2020.5.01
YouDev est un service qui se concentre sur les développeurs individuels et leur permet d'en savoir plus (je veux en savoir ...).
Même si le service est reconnu, je pense que le développeur n'est pas sous les projecteurs, donc je pense que les développeurs individuels peuvent faire appel non seulement au service mais aussi au développeur lui-même. Je l'ai créé.
Nous sommes toujours à la recherche de développeurs individuels, donc ** je suis un développeur individuel! Si vous pensez **, veuillez vous inscrire!
De plus, nous acceptons les améliorations, qu'elles puissent être améliorées ou non!
・ ** Ingénieur Heppoko </ font> ** ・ Historique du développement: 3 ans ・ Historique du développement personnel: un semestre (en 2020.01, j'ai décidé de faire du développement personnel cette année! **) ・ Langage de développement: python (six mois) ・ Sens du design: ** Aucun ** (Le design est impossible sans utiliser un cadre.) ・ Je ne peux pas suivre la vitesse des nouvelles technologies de nos jours. ・ Python est chaud! ?? Je pense juste ** ・ Publions sur Qiita lorsque vous commencez le développement personnel! J'ai pensé, mais l'ambiance était différente. (Il ne semble pas y avoir de rideau pour les ingénieurs Heppoko.) ・ Qiita ne peut être écrit qu'en MarkDown! ?? Qu'est-ce que c'est impossible!
Quoi qu'il en soit, je voulais en savoir plus sur les développeurs individuels.
Quel genre de personnes sont des développeurs individuels et quel genre d'activités font-ils? Un service utile quand on pense
Visez un lieu d'activités de sensibilisation qui soit bénéfique aux développeurs individuels.
Comme ça.
DB a utilisé MySQL parce que je n'avais pas beaucoup utilisé PostgreSQL. Je voulais vraiment utiliser AWS RDS, mais ce n'était pas un service monétisé, alors je l'ai installé discrètement dans EC2. Mais je veux toujours utiliser RDS. ..
Je voulais éviter d'utiliser S3 si possible, mais j'ai décidé d'utiliser S3 car il y a des données d'image enregistrées par l'utilisateur. En premier lieu, la capacité de stockage d'EC2 n'est que de 8 Go, j'ai donc choisi S3 tranquillement ici aussi.
Cependant, pour les données d'image, le CSS et les systèmes de script couramment utilisés dans le service, un nouveau dossier statique est créé du côté EC2 et distribué à partir de là. (Au pire, c'est un fichier qui peut être corrompu.)
Le code source est géré par github privé.
Immédiatement après la mise en ligne de l'environnement de production, j'avais l'habitude d'exploiter les fichiers multimédias dans le même répertoire que EC2 static, donc je devais d'abord les déplacer vers S3. ..
Créez sérieusement un compartiment pour S3.
Il n'y avait fondamentalement aucun point d'achoppement ici.
Tout d'abord, confirmez la certification ci-dessous
$ aws configure list
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key <not set> None None
secret_key <not set> None None
region <not set> None None
S'il n'est pas défini, vous ne pourrez pas vous connecter à S3, définissez donc la clé d'accès et la clé secrète de l'utilisateur que vous avez créé précédemment.
$ aws configure
AWS Access Key ID [None]: <clé d'accès>
AWS Secret Access Key [None]:<Clef secrète>
Default region name [None]: <Je n'ai rien entré>
Default output format [None]:<Je n'ai rien entré>
Maintenant que vous pouvez vous connecter à S3, téléchargez-le!
$ cd /usr/share/nginx/html/media/ #C'est le répertoire qui contient les fichiers que vous souhaitez migrer
$ aws s3 cp --recursive uploads s3://<Nom du godet>/<Nom de dossier>
J? ai compris!
Au fait -Si --recursive est ajouté, le répertoire sera ciblé. -Si la synchronisation est utilisée à la place de cp, elle sera synchronisée au lieu de la copie.
Du côté de Django, vous devez télécharger le fichier multimédia et changer la destination de référence pour qu'il fasse face à S3.
Les modules suivants sont requis pour utiliser S3 avec Django, donc installez-le.
Installation
$ pip install django-storages
$ pip install boto3
Ajoutez ce qui suit au paramètre
settings.py
INSTALLED_APPS = [
...
'storages', #ajouter à
]
...
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',
'social_django.context_processors.backends',
'social_django.context_processors.login_redirect',
'django.template.context_processors.media', #ajouter à
#En ajoutant ceci, à partir du modèle{{MEDIA_URL}}Vous pourrez faire référence à S3 avec.
],
},
},
]
...
# MEDIA_URL = '/media/'
AWS_ACCESS_KEY_ID = '<clé d'accès>'
AWS_SECRET_ACCESS_KEY = '<Clef secrète>'
AWS_STORAGE_BUCKET_NAME = '<Nom du godet>'
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
AWS_LOCATION = 'media'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
MEDIA_URL = "https://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION)
Vous pouvez maintenant télécharger sur S3 et parcourir S3.
social-auth-app-django
Une bibliothèque qui vous permet de vous connecter aux services créés avec Django en utilisant les services sociaux (twitter, google, facebook, etc.).
Paramètres d'authentification pour le compte Twitter
Installation
$ pip install social-auth-app-django
settings.py
INSTALLED_APPS = [
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'social_django', #Ajouter ici
]
...
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',
'social_django.context_processors.backends',#Ajouter ici
'social_django.context_processors.login_redirect',#Ajouter ici
],
},
},
]
...
SOCIAL_AUTH_URL_NAMESPACE = 'social' #ajouter à
#AUTHENTICATION_BACKENDS ajoutés
AUTHENTICATION_BACKENDS = [
'social_core.backends.twitter.TwitterOAuth',
'django.contrib.auth.backends.ModelBackend',
]
#Les éléments suivants doivent être définis dans les variables d'environnement de l'environnement de production!
SOCIAL_AUTH_TWITTER_KEY = 'xxxxxxxx' # Consumer Key (API Key)
SOCIAL_AUTH_TWITTER_SECRET = 'xxxxxxxxx'# Consumer Secret (API Secret)
SOCIAL_AUTH_LOGIN_REDIRECT_URL = '' #Rediriger l'URL lors de la connexion
LOGOUT_REDIRECT_URL = '' #Rediriger l'URL lors de la déconnexion
project/urls.py
urlpatterns = [
...
path('', include('social_django.urls')), #ajouter à#
#En ajoutant ↑, chaque processus peut être effectué en accédant à l'URL suivante depuis le côté application.
#S'identifier:/login/twitter
#Se déconnecter:/disconnect/twitter/
#* La déconnexion est authentifiée côté Django_views.LogoutView.as_Mieux vaut utiliser la vue
#complete:/complete/twitter/
...
]
/ complete / twitter / sera l'URL de rappel de l'API Twitter. Exemple)
Après cela, vous pouvez l'utiliser en migrant
migrate
$ python manage.py makemigrations social_django
$ python manage.py migrate
requests-oauthlib
Il s'agit d'une bibliothèque qui vous permet d'implémenter OAuth lors de l'utilisation de l'API Twitter avec quelques codes.
Installation
$ pip install requests requests_oauthlib
settings.py
TWITTER_ACCESS_TOKEN = 'XXXXXX' #ajouter à
TWITTER_ACCESS_TOKEN_SECRET='XXXXX' #ajouter à
Ici, à titre d'exemple, la méthode d'acquisition des informations utilisateur est décrite.
Remplissez ce qui précède n'importe où dans settings.py.
views.py
CK = settings.SOCIAL_AUTH_TWITTER_KEY
CS = settings.SOCIAL_AUTH_TWITTER_SECRET
AT = settings.TWITTER_ACCESS_TOKEN
ATS = settings.TWITTER_ACCESS_TOKEN_SECRET
def getAccount(request,screen_name):
url = "https://api.twitter.com/1.1/users/show.json" #Voir la documentation officielle pour les terminaux
params = {
'screen_name':screen_name
}
req = twitter.get(url, params = params)
if req.status_code == 200:
res = json.loads(req.text)
else:
res=""
print("Failed: %d" % req.status_code)
return res
Comme je l'ai mentionné au début, vous ne pouvez pas faire de CSS sans utiliser la bibliothèque. .. .. Vous pouvez également installer scss, donc si vous ne l'aimez pas, vous pouvez changer la couleur principale, etc. en même temps.
** * Remarque: Si la case de sélection est défectueuse et que le champ de sélection de sélection chevauche la case de sélection ci-dessous. Il y a eu un problème qui n'a pas pu être sélectionné correctement. </ font> **
J'étais désespéré, mais le code de réparation a été affiché sur le github suivant, donc si vous l'utilisez, il sera résolu!
cropper.js
Une bibliothèque qui recadre les images. Bien sûr, je ne pouvais pas mettre en œuvre le processus de coupe moi-même, alors je l'ai utilisé.
Peu importe combien de fois j'ai lu le document, la méthode de mise en œuvre était un mystère, mais j'ai finalement compris le site suivant des dizaines de fois.
Même si vous passez par quelques dizaines de fois, vous devriez le savoir!
Principalement les bibliothèques utilisées ci-dessus.
Depuis Django3.0, le pilote qui se connecte à mysql est décrit dans le document officiel comme mysqlclient recommandé, j'ai donc essayé de l'installer tranquillement, mais il y avait une erreur. ..
python
$ pip install mysqlclient
> ~
check the manual that corresponds to your MySQL server version for the right syntax to use near 'rsion' at line 1
~
Erreur mystérieuse
Cause: semble être dû à une ancienne version de mysql
L'environnement de développement utilise Cloud9 d'AWS, mais avec cloud9, mysql est installé dans l'état initial.
Cependant, il semble que la version est 5.5 et mysqlclient ne peut être utilisé qu'à partir de 5.7, j'ai donc supprimé 5.5 et installé 5.7.
python
sudo yum remove mysql* #Supprimer mysql
#(Si vous faites attention, sudo miam-y remove mysql-config mysql55-server mysql55-libs mysql55)
sudo yum -y install mysql57-server mysql57
sudo yum -y install mysql-devel
À l'origine, charset était défini sur utf-8, de sorte que les pictogrammes ne pouvaient pas être enregistrés.
Changer le fichier de paramètres
/etc/my.cnf
[mysqld]
character-set-server=utf8mb4
[client]
default-character-set=utf8mb4
Redémarrez mysql
/etc/my.cnf
sudo service mysqld restart
La table a déjà été créée avec utf-8, alors changez-la
mysql
ALTER TABLE targettable CONVERT TO CHARACTER SET utf8mb4;
Dans le cas de Django, les paramètres sont également requis du côté Django
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'xxx',
'USER': 'xxx',
'PASSWORD': 'xxx',
'HOST': '',
'PORT': '',
#OPTIONS ajoutées
'OPTIONS': {
'charset': 'utf8mb4',
},
}
}
Vous pouvez maintenant sortir et enregistrer des pictogrammes!
Nous continuerons à faire de notre mieux pour ajouter des fonctions, alors veuillez vous inscrire
Recommended Posts