The package "The Social Network" is a django base backend core element for any possible social network you can think of.
The package "The Social Network" is a django base backend core element for any possible social network you can think of. You can easily create clones for all popular social networks.
or download manuel on [Pypi](https://pypi.org/project/the-social-network/).
## How to use
If you not have already created a django python project, [create](https://docs.djangoproject.com/en/3.2/intro/tutorial01/) it at first in a new directory with the command
> django-admin startproject mysite
This will create a **mysite** directory in your current directory.
Open the **mysite** directory and open the **settings.py**.
Add *'the_social_network'* to **INSTALLED_APPS** and save the file.
Next open the urls.py and add the following line to your **urlpatterns**
Now everything is ready to run django with **the-social-network**.
Create the database with
> python manage.py migrate
and start the server with
> python manage.py runserver
the following page should showup if you open [http://127.0.0.1:8000/](http://127.0.0.1:8000/) in your browser.
## Request API for the URLs
In all requests (except for the request of *authentication/register/* or */authentication/login/*) you need to send the authentification token inside the header.
For authorization use the header name "Authorization" and the value "Token <token>"
#### Authentication
##### POST url: ".../authentication/register/"
Register a user
Requestbody:
{
"username": "username",
"password": "password",
"email": "
}
Responsebody:
{
"token": "token"
}
##### POST url: ".../authentication/login/"
Login a user
Requestbody:
{
"username": "username",
"password": "password"
}
Responsebody:
{
"token": "token"
}
##### POST url: ".../authentication/logout/"
Logout a user
Requestbody: None
Responsebody: None
Success: HTTP/200
##### GET url: ".../authentication/validate/"
Validate a token
Requestbody: None
Responsebody: None
Success: HTTP/200
#### Account
##### GET url: ".../accounts/show/<user_id>/"
Show a public user
Requestbody: None
Responsebody:
[{
"user": {
"id": ...,
"username": ...,
"email": ...,
"date_joined": "..."
},
"image": "...",
"biography": "...",
"related_by": [],
"related_to": [],
"statements": []
}]
##### GET url: ".../accounts/show/own/"
Show the own user
Requestbody: None
Responsebody:
[{
"user": {
"id": ...,
"username": ...,
"email": ...,
"date_joined": "..."
},
"image": "...",
"biography": "...",
"related_by": [],
"related_to": [],
"statements": []
}]
##### GET url: ".../accounts/show/all/"
Show all public users
Requestbody: None
Responsebody:
[{
"user": {
"id": ...,
"username": ...,
"email": ...,
"date_joined": "..."
},
"image": "...",
"biography": "...",
"related_by": [],
"related_to": [],
"statements": []
},
...
]
##### PUT url: ".../accounts/update/"
Updates the own account. Only "Biography" and "Image" are allowed to be updated.
Requestbody:
{
"biography": "...",
"file": "..."
}
Responsebody: None
Success: HTTP/200
##### PUT url: ".../accounts/follow/<user_id>/"
Follow a user
Requestbody: None
Responsebody: None
Success: HTTP/200
##### PUT url: ".../accounts/unfollow/<user_id>/"
Unfollow a user
Requestbody: None
Responsebody: None
Success: HTTP/200
##### PUT url: ".../accounts/operation/add/statement/"